存内计算与邻存计算《In-/Near-Memory Computing》Chapter4

Chapter 4.1 SRAM BASICS AND CACHE GEOMETRY 

SRAM是当今计算机系统中广泛使用的一种重要的内存类型。数据为静态存储,不需要定期刷新。SRAM中的数据也是不稳定的,所以SRAM是一种临时数据存储类型。sram用于大多数现代cpu的片上缓存和寄存器文件。与DRAM相比,SRAM拥有更大、更复杂的bit cell。因此,SRAM的数据密度较低,制造成本较高,通常用于容量较小的存储结构。另一方面,SRAM的访问速度比DRAM快。所以SRAM适用于高速缓存和位于内存层次结构顶部的寄存器。典型的SRAM具有如图4.1所示的6-晶体管单元结构。该cell由一对交叉耦合的逆变器(cross-coupled inverters)和两个接入晶体管(access transistors)组成。交叉耦合逆变器有两种稳定状态,因此可以存储一位数据。接入晶体管用于数据位的读写。

SRAM单元被安排在一个array中以进行有效的数据访问。在SRAM阵列中,一个字线跨越一行并通过接入晶体管连接到一行中的所有cell。同样,一对位线(BL/BLB)跨越一列并连接列中的所有cell。一些外围逻辑被放置在每个SRAM阵列周围,帮助从阵列访问数据。行地址解码器连接到所有的字线,并用于根据行地址激活正确的字线。BL外设包括感测放大器、位线预充和写入驱动器。在一个读周期中,位线首先被预充电,作为读取的准备。然后激活目标字线,在每个位线对(bitline pair)上,BL或BLB保持高位,这取决于相应的bit-cell的值。在一个写周期中,每个写驱动器都会根据需要写的值将BL或BLB提高到高电压。然后激活目标字线,每个cell的交叉耦合逆变器根据BL/BLB值切换到新的状态。

 SRAM单元必须在读写过程中和数据保存阶段保持存储数据的正确性。一个定量的SRAM单元的稳定性测量方法是噪声容限(noise margin),这是电子噪声的最大水平,不会导致SRAM单元的数据损坏。我们简要概述了现代处理器中cache的几何结构。图4.2展示了一个多核处理器,其模型粗略地模仿了英特尔的至强处理器[58,59]。共享的最后一级缓存(Last Level Cache, LLC)被分配到许多slice上(这里讨论的Xeon E5为8-14个),这些slice可以通过共享的环形互连(图中没有显示)被cora访问。图4.2b显示了LLC缓存的一个slice。该slice有80个32KB的bank,分为20种组织方式。每个bank由两个16kb的sub-array连接。图4.2c显示了一个由8kb SRAM array组成的16KB sub-array的内部结构。图4.2显示了一个8kb的SRAM array。SRAM阵列被组织成多行数据存储bit-cells。同一行中的bit-cells共享一个字线,而同一列中的bit-cells格共享一对位线。

SRAM阵列中的in-SRAM矢量运算(图4.2)可以利用缓存结构中的大量并行性,将数千个SRAM阵列(Xeon E5中有·4480个阵列)重新利用为矢量计算单元。我们观察到LLC访问延迟主要由缓存slice内的线延迟、访问上层缓存控制结构和network-on-chip控制。因此,一个典型的LLC访问可以花费~30个周期,而一个SRAM阵列访问只有一个周期(在4 GHz时钟[58])。幸运的是,in-SRAM架构只需要SRAM阵列访问,而不需要传统缓存访问的开销。因此,可以节省大量的精力和时间用于连接和更高级别的内存层次结构。

Chapter4.2 DIGITAL COMPUTING APPROACHES

Chapter4.3  ANALOG AND DIGITAL MIXED-SIGNAL APPROACHES

Chapter 4.4  NEAR-SRAM COMPUTING

Near-SRAM计算将额外的计算组件放置在SRAM结构附近,而在In-SRAM计算中,SRAM阵列或外部设备被修改来进行计算。早在20世纪90年代,就有人提出将近sram计算设备作为一种协处理器。例如,Terasys[3]将single-bit的ALU放置在SRAM阵列附近,每个位线放置一个。数据从SRAM中读出,计算由ALU以位串行(bit-serial)方式执行。主处理器负责向SRAM阵列发送计算指令。

CPU缓存是用SRAM构建的一个主要的架构组件,因此最近很多工作都在探索用CPU缓存实现Near-SRAM计算的机会。计算是由放置在CPU缓存层次结构中的定制PE实现的。为了实现足够的并行性,PE被放置在最后一级cache slice 附近,在cora和最后一级缓存slice间的数据路径上[74]。PE有各种类型的实现,包括简单的in-order内核,可重构的结构如FPGA[75],以及特定应用程序的定制逻辑[76]。被加速的应用程序大多是涉及CPU处理的数据密集型操作,如数据库[76]和网络栈(network stack)中的函数[74]。在简化的编程模型和灵活的计算调度上对Near-sram计算进行了优化。例如,Livia[75]根据内存层次中操作数的位置,优化计算(PE或CPU核)的位置,从而减少总体数据移动。虽然并行度比in-SRAM计算低,但near-SRAM计算不需要对sram结构进行低级修改,并且支持不同PE设计的更灵活的计算模式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,RISC-V是一种开源指令集架构,旨在提供一个灵活且可定制的计算机硬件/软件接口。它的设计基于RISC (Reduced Instruction Set Computing)架构,具有精简、清晰的指令集,易于实现和扩展。 对于题目给出的习题答案,我们需要了解RISC-V指令集的特点和常用指令。RISC-V指令集具有三种指令格式:R型、I型和S型。其中,R型指令用于寄存器-寄存器操作,I型指令用于立即数和寄存器操作,S型指令用于存储器操作。 常用的RISC-V指令包括:add、sub、and、or、xor、slt等。add指令表示两个寄存器相加,并将结果存放到目标寄存器中;sub指令表示两个寄存器相减;and、or、xor分别表示位与、位或、位异或操作;slt指令表示比较两个寄存器的值,如果第一个寄存器的值小于第二个寄存器的值,则将目标寄存器值设为1,否则设为0。 除了常用指令,我们还需要了解RISC-V的一些特性,例如虚拟地址空间和异常处理。RISC-V支持虚拟地址空间,允许进程使用虚拟地址,而不必管物理地址。同时,RISC-V也具有完善的异常处理机制,可以在出现异常时及时处理,避免系统崩溃。 总之,了解RISC-V指令集的特点和常用指令对于计算机组成与设计-硬件/软件接口的学习是非常重要的。通过掌握RISC-V指令集,我们可以更深入地理解计算架构和操作系统的底层实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值