刘 晓 刘迪军 张有光 罗力川 康 旺
①(北京航空航天大学电子信息与工程学院 北京 100191)
②(北京航空航天大学集成电路科学与工程学院 北京 100191)
随着半导体工艺特征尺寸的不断缩小,传统的基于互补金属氧化物半导体 (Complementary Metal Oxide Semiconductor, CMOS)工艺的电路遭遇了性能瓶颈。当工艺节点微缩到纳米级别时,由量子隧穿效应导致的漏电流成为制约传统存储器发展的重要因素[1–4]。同时,传统的计算系统采用冯·诺依曼体系结构,使用处理单元与存储单元分离的设计方案,随着集成电路工艺尺寸的不断缩小,处理单元和存储单元之间的性能差距越来越大,导致在多计算任务中,大部分的能耗和时间都消耗在数据移动过程中,而不是数据计算中,限制了当代计算系统的进一步发展。存内计算[5,6]是将逻辑单元与存储单元高度集成在一起,使得数据能在存储单元中完成逻辑运算操作,有效避免通过 I/O 端口对储单元的大量读写操作,从而解决了存储器对数据处理单元性能限制的问题。在众多新型存储器件当中,自旋电子器件由于其非易失性、天然抗辐射、高速度[7,8]等特点,成为当今学术界和工业界存储器技术研究的热点之一。近年来,自旋器件在内存单元[9,10]和逻辑单元[11,12]设计中也得到了广泛的研究与应用。
全加器(Full Adder, FA)是算术逻辑单元(Arithmetic and Logic Unit, ALU)中最基本的操作之一,因此FA在ALU结构中起着重要的作用。之前在文献[13]和文献[14]中提出的磁全加器(Magnetic Full Adder, MFA) 存在写操作慢和写功耗高两个缺点。文献[13,14]提出的MFAs是基于通过自旋转移转矩(Spin Transfer Torque, STT)[15]方法翻转的传统磁隧道结(Magnetic Tunnel Junction,MTJ)器件进行设计的。然而STT方式进行数据写入时具有较高的写入功耗和延迟,而且还存在数据读写串扰的问题。 基于自旋轨道矩(Spin Orbit Torque, SOT)的设计方案[16],虽然在一定程度上解决了STT器件读写方面的问题,但是SOT MTJ器件结构需要两个接入晶体管(一个用于写入,另一个用于读取),因此比两端STT MTJ需要更大的单元面积。近年来,一种新型的具有面内交换偏置的电压控制自旋轨道转矩(Voltage-Control SOT,VC-SOT)驱动的MTJ 器件[17]引起了学术界和工业界的广泛关注。无外磁场辅助的SOT翻转可以通过面内交换偏置实现。通过控制加在 MTJ上的偏置电压和反铁磁(AntiFerroMagnetic, AFM)层的双向SOT电流,可以实现MTJ电阻状态的快速切换。此外,VC-SOT MTJ器件的读写电流小于STT和SOT驱动的器件,因此VC-SOT MTJ可以达到较低的能耗。
本文基于VC-SOT-MTJ器件设计了一个存内计算全加器,其主要贡献为:
(1)提出一个高度并行的存内计算逻辑阵列。类似于单个器件的操作,该逻辑阵列可以通过输入信号的配置进行不同逻辑运算功能。同时,本文提出的存内计算逻辑阵列不仅支持阵列间的并行操作,单个阵列不同行之间也可以通过输入信号的配置执行不同的逻辑运算,实现更为高效的并行计算模式。
(2)提出一个存内计算全加器。本文提出的全加器可以实现高度并行运算,仿真结果表明该全加器可实现更快的计算速度(1.11 ns/bit)和更低的计算功耗(5.07 fJ/bit)。
本文的其余部分组织如下。第2节简要介绍了VC-SOT MTJ器件的基本结构。第2节介绍了基于VC-SOT-MTJ器件的基本结构。第3节介绍基于VC-SOT-MTJ的可复用可重构的逻辑阵列。第4节介绍了一种可并行复用的1 bit全加器设计方案。仿真结果和性能分析结果见第5节,最后,第6节对本文进行了总结。
MTJ是自旋电子学中数据存储的基本单元之一,它主要由两层铁磁层及一层氧化层构成,结构排列为:铁磁层、氧化层、铁磁层。其中,磁矩固定的铁磁层称为固定层,另一层磁矩会随外磁场变化的铁磁层称为自由层,位于中间的氧化层被称为隧穿势垒层。当固定层与自由层的磁矩呈平行排列时,MTJ表现为低阻值状态,可以用“0”表示。反过来,当固定层与自由层的磁矩呈反平行排列时,MTJ表现为高阻值状态,可以用“1”表示。因此,对于MTJ来说,可以用其电阻值的大小来进行对应数据的存储。图1显示了一个典型的VCSOT MTJ的结构。该器件包含一个AFM层(例如,IrMn) ,其上有一个MTJ。最近,我们观察到一种新的无磁开关机制[15],它采用了 IrMn/CoFeB/MgO结构,并借助面内交换偏置实现了无磁SOT开关。如图1所示,新机制还采用了VCMA效应,通过施加栅极电压 Vbia,能够显著降低了SOT开关电流。执行写入操作时,在MTJ上方施加偏置电压(Vbia)以减少切换磁化方向所需的能量势垒,从而降低临界SOT写电流。此时在AFM中施加适当的SOT写电流(在降低的临界开关电流和常规开关电流之间)可以切换MTJ自由层磁化方向。MTJ自由层的磁化方向将根据SOT写入电流的方向改变。当AFM中通过从左到右的写入电流时,MTJ的磁化状态将切换为平行状态,反之,当AFM中通过从右到左的写入电流时,MTJ的磁化状态将切换为反平行状态。
图1 VC-SOT MTJ器件结构
本文采用的VC-SOT MTJ器件支持在重金属层上进行多个MTJ器件的堆叠。基于VC-SOT MTJ器最近文献[18]提出了一种适合SOT器件的有效的方法来实现一组布尔逻辑函数的完整集合。本文采用了文献[18]中的布尔逻辑设计方法,图2所示为使用单个VC-SOT MTJ器件实现的AND, OR和XOR逻辑功能,其中A表示施加偏置电压Vbia逻辑1(例如,Vbia=1.2 V)或逻辑0(例如,Vbia= 0 V));Bi表示具有MTJ器件的初始电阻状态(用“1”表示高阻值状态,“0”表示低阻值状态);C表示设备写入电流的方向(用“1”从左向右的写入电流,“0”从右至左的写入电流);Bi+1表示计算结果。其余的布尔逻辑函数也可以通过重新配置输入来类似地执行。
图2 基于单个VC-SOT MTJ器件的3个基本的布尔逻辑函数
本文提出了一个高度并行的存内计算可重构阵列(Reconfigurable Array),简称VC-RA。如图3(b)所示,以每条重金属层上集成8个MTJ器件的存内计算可重构阵列为例进行说明。阵列中每一行上的MTJ单元,由于其集成在相同的重金属层上,可以并行地执行相同的读写操作以实现图2所示的布尔逻辑。同时,通过激活不同字线(Word Line, WL)上的晶体管,可以实现多行并行计算。与文献[18]提出的可重构阵列不同的是,VC-RA具有更好的可重构性和更高的运算并行度。首先,图3(a)中所示的逻辑阵列在执行多行并行操作时,受到同一个写电流的控制,因此只能执行相同的逻辑运算,而图3(b)中的VC-RA不同行上的写入电流可通过写入驱动器进行配置,不同行之间可以通过配置不同方向的写入电流执行不同的逻辑操作。其次,文献[18]中字线(Bit line, BL)方向上的A1~A8信号在多行之间共享,因此同一个逻辑阵列无法进行不同操作数的逻辑操作。当操作数不同时,单个阵列只能顺序执行。以图3(b)中第n行为例,VC-FA可以通过WLn1~WLn8控制偏置电压选通晶体管的开闭。当A1~A8输入的操作数全为“1”,并且字线选通信号仅WLn1=WLn2=“1”,其余信号为“0”时, A1~A8作用于MTJ器件上端的偏置电压为{1,1,0,0,0,0,0,0},同时,不同行之间可以独立的偏置电压选通信号的配置,因此VC-FA可以支持不同操作数的逻辑运算。总之,VC-FA不仅可以在单一阵列内部并行执行不同的逻辑运算,还支持不同操作数并行处理。下面将对VC-FA的与、或、异或逻辑操作进行详细简要的说明。
图3 存内计算可重构逻辑阵列
对于“与”和“或”逻辑函数,其操作与图2(a)和图2(b)中所示的单个器件操作方式类似。首先,通过行译码器选中需要进行逻辑操作的字线WL,并将列方向上的所有晶体管都打开。然后将图3(b)所示的8个操作数(A1~A8)分别提供给8列,同时在重金属层中施加一个适当大小的SOT写电流,电流的方向(即C的取值)决定了该行需要执行的逻辑类型(“0”表示“与”,“1”表示“或”)。
图4所示为4个MTJ阵列结构的“XOR”逻辑功能(包括两步操作和一个预读操作)。首先,通过读取放大器将存储在4个MTJ中的数据同时读出。数据读出后,第1步将MTJs中数据为“0”的对应列上的选通晶体管S1和S3打开,而其他列保持关闭状态,将A1~A4提供给各列。同时,在AFM层中施加一个从左至右的写入电流,即C=1。第2步,将MTJs中数据为“1”的对应列上的选通晶体管S2和S4打开,而其他列设置为关闭,输入A1~A4保持不变,此时在AFM层中施加一个从右至左的写入电流写入“0”。至此,异或操作执行完毕。由于VC-FA阵列内部不同行之间支持不同逻辑的逻辑运算,所以异或操作执行过程中,我们可以并行地执行“与”和“或”逻辑的任意两两组合。
图4 VC-SOT MTJ阵列结构中的“XOR”逻辑功能
一位全加法器是处理器中最基本的算术函数之一。然而,现有的存内计算全加器[18]无法满足数据的大规模并行需求。为此,本文基于VC-SOT MT可重构阵列提出了一种并行一位全加器设计,简称VC-FA,以解决以前的工作的局限性。在数学上,一位全加器可以表示为
其中,X和Y是两个操作数,Z是进位初始值,Zi是进位计算结果。本文采用了文献[18]中的全加器并行计算方法,其并行计算过程如图5所示。具体的计算过程如下:(1)将操作数X, Y和Z从数据MRAM中读出并存放在数据寄存器中,这里将最初存放操作数X, Y和Z的MRAM分别记为M1,M2和M3。(2)在M1中执行XY的操作,M2中执行X ⊕Y的操作,M3不进行操作。(3)将(2)中的计算结果读取之对应的寄存器中。(4)在M2中并行完成X ⊕Y ⊕Z,M3中 顺 序 执 行Z(X ⊕Y) 和XY+Z(X ⊕Y)的操作,M3中的两步操作与M2的异或可并行执行。值得注意的是,由于文献[18]中的同一个逻辑阵列单元只能够顺序完成不同的逻辑操作,因此文献[18]中并行存算一体架构需要3个不同的逻辑阵列来并行完成图5所示的全加器并行操作,如图6(a)中红色虚线框区域所示。同时,操作过程中寄存器中的数据需要在这3个可重构阵列间进行传递,增加了数据传输的延时。与之不同的是,VC-FA可以在同一个可重构阵列中并行执行不同的逻辑操作,因此VC-FA的并行存算一体阵列仅需要一个逻辑阵列来并行执行全加器操作,如图6(b)红色方框所示。其他逻辑阵列可以灵活地配置成存储单元或者逻辑单元,文献[18]中的可重构阵列配置为逻辑阵列进行并行运算时,只能3个1组进行配置。与文献[18]相比,本文提出的存内计算逻辑阵列,在相同规模阵列结构下,具有更高的并行度,支持更大规模的并行运算。
图5 VC-FA数据处理流程
图6 并行存算一体阵列结构
采用40 nm CMOS 工艺和一个基于 VC-SOT MTJ 紧凑模型(用 Verilog-A 语言编写)[17]对本文提出的一位全加器进行设计和评估。表1 列出了VC-SOT MTJ相关的关键参数。
表1 VC-SOT MTJ模型的参数和变量
图7所示为VC-FA时序仿真波形。本仿真以3组1 bit全加法器为例,这意味着每一行重金属上有3个MTJ器件。3组操作数{X1,X2,X3},{Y1,Y2,Y3}和{Z1,Z2,Z3}分别存放在图3(b)可重构阵列中的不同行中。参数A-X1~A-X3为存放操作数X的可重构阵列上的偏置电压,参数A-Y1~A-Y3和AZ1~A-Z3同理;参数B-X1~B-X3对应X的可重构阵列上缓存单元的电阻状态,用于存储逻辑计算的结果,其中mz表示纵向的磁化矢量;参数Ic-X为存放操作数X的可重构阵列对应行上的SOT写电流。这里假设3组操作数的初始值{X1,X2,X3}={1,1,1},{Y1,Y2,Y3}={1,1,0}, {Z1,Z2,Z3}={1,0,1},从图7步骤1中参数B-X1~B-X3可以看出。如图7所示,本文提出的存内计算并行全加器正确地实现了3 组加法运算(s u n={1,0,0},Zi+1={1,1,1})。
图7 基于VC-SOT MTJ的并行全加法器时序仿真波形
表2显示了VC-FA与文献[18]中加法器的性能的对比。这里的延迟和功耗被平均到每1 bit。当全加器操作仅使用一个可重构单元时,VC-FA延时和功耗与文献[18]中的加法器相比分别减少了60.02%和51.58%。当全加器操作使用多个可重构单元时,VC-FA延时与文献[18]中的加法器相比分别减少了74.36%,功耗与使用一个可重构阵列式相同。在只使用一个可重构阵列式,VC-FA可以实现如图5所示的并行逻辑计算,但是文献[18]的可重构单元只能分7步串行完成该加法操作,因此VC-FA在延时上有较大的性能优势。同时受益于VC-SOT MTJ器件在偏置电压下的超低写电流,其功耗也得到了很大的改善。
表2 全加器性能对比
本文基于VC-SOT MTJ器件,提出可一种新的存内计算可重构逻辑阵列。该可重构阵列不仅支持不同操作数之间的并行运算,还能够实现阵列内的多逻辑并行运算。在此基础上,本文设计了存内计算并行加法器VC-FA 。仿真结果表明,VCFA可以并行完成加法操作,并在多个阵列并行模式下实现约1.11 ns/bit和约5.07 fJ/bit的性能。后续将统筹考虑外围电路的面积与功耗开销,并基于现有VC-FA进行多比特全加器的设计与研究,以适应复杂应用的计算需求。