您好!欢迎光临某某钣金加工有限公司网站!
钣金加工一站式制造供应商
设计定制、生产加工、整机装配、设备接线
客户咨询服务热线:
400-123-4567
采用Xilinx Zynq SoC 为云计算提速HASH GAME - Online Skill Game ET 300
您的位置: 首页 > 新闻中心 > hashgames > 采用Xilinx Zynq SoC 为云计算提速HASH GAME - Online Skill Game ET 300

采用Xilinx Zynq SoC 为云计算提速HASH GAME - Online Skill Game ET 300

作者:小编    发布时间:2025-02-11 09:33:13     浏览次数 :


  HASH GAME - Online Skill Game GET 300

采用Xilinx Zynq SoC 为云计算提速HASH GAME - Online Skill Game GET 300

  如图所示,我们已在配备有一对ARM Cortex- A9 IP核的Zynq SoC中整合了硬件加速器单元。每个内核都有其自己的指令和数据高速缓存,而每种高速缓存都可使用共享互连网络与外设进行通信。该加速器通过连接到互连网络的高性能总线实现与处理器的通信。处理器通过访问加速器的特定寄存器,给出需要更新到MapReduce加速器的键和值。Map任务结束后,加速器即累加了所有键的值。处理器仅需将该键发送给加速器并读取寄存器中的最终值,即可检索该键的最终值。通过这种方法,所提议的架构就能向包含需要更新的键/值对发送无阻塞交易,从而加速MapReduce处理。

  Hash函数能加速键的索引进程,但在两个不同的键有着相同Hash值的情况下,也可能造成冲突。为了解决这一问题,我们选择了Cuckoo Hashing作为解决Hash冲突的最佳途径。Cuckoo Hashing[2]使用两个(而非一个)Hash函数。在插入新的条目时,这个条目就会存储在第一个Hash键的位置。如果该位置被占用,就会将旧条目移到自己的第二个Hash地址。这个过程会循环往复,直到找到空闲地址为止。该算法可提供恒定的查找时间O(1)(查找只要求检查Hash表中的两个位置),而插入时间则取决于高速缓存的大小O(n)。如果该流程应进入无限循环,Hash表就进行重建。

  使用T1和T2两个表能实现Cuckoo Hashing算法。TI和T2分别对应一种Hash函数,每种大小为r。每个表均使用不同的Hash函数(分别为h1和h2)来创建T1和T2的地址。每个组件x分别经Hash函数h1或h2运算后,存储在T1或T2中,即有T1[h1(x)]或T2[h2(x)]。这样的查找方法简单明了。对每一个我们需要查找的组件x,我们仅需分别使用Hash函数h1和h2检查T1和T2表中的两个可能位置。

  我们将Cuckoo Hashing用于图1所示的MapReduce加速器。我们使用了两个Block RAM来存储T1和T2两个表的条目。这些BRAM可存储键、值和标签。在标签字段中使用1位用于标示特定的列是否有效。使用两个基于简单XOR函数的Hash函数将键映射到BRAM的地址。每次需要访问BRAM地址时,就需要使用Hash表来创建地址,然后根据两个比较器的指示来判断能否命中BRAM(即创建的键与RAM中存储的键一样,且有效位为1)。控制单元可协调对存储器的访问。我们将控制单元实现为可执行Cuckoo Hashing的有限状态机(FSM)。

  如图3所示,系统的总体速度提升了1.23倍到1.8倍不等。具体加速情况取决于每项应用的特征。在映射函数较为复杂的情况下,MapReduce加速器的加速性能就不那么明显了。在映射函数较为简单且占用的总体执行时间较少的应用中,加速性能比较显著,因为有大量总体执行时间可用于Map和Reduce功能之间的通信。因此在这种情况下,MapReduce加速器能提供非常明显的加速效果。此外,MapReduce加速器还能在处理器中创建较少的新线程,从而减少环境切换次数和执行时间。例如,在字数统计应用中,平均环境切换次数就从88次降到60次。