CN109582364B - 基于忆阻器的精简指令集处理器 - Google Patents
基于忆阻器的精简指令集处理器 Download PDFInfo
- Publication number
- CN109582364B CN109582364B CN201811268340.7A CN201811268340A CN109582364B CN 109582364 B CN109582364 B CN 109582364B CN 201811268340 A CN201811268340 A CN 201811268340A CN 109582364 B CN109582364 B CN 109582364B
- Authority
- CN
- China
- Prior art keywords
- instruction
- chip
- bit
- immediate
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 40
- 238000003860 storage Methods 0.000 claims description 42
- 238000004891 communication Methods 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 230000003139 buffering effect Effects 0.000 claims description 4
- 230000006698 induction Effects 0.000 claims description 4
- 230000004927 fusion Effects 0.000 abstract description 5
- 238000011160 research Methods 0.000 abstract description 4
- 238000013461 design Methods 0.000 abstract description 2
- 230000006872 improvement Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 12
- 101100310920 Caenorhabditis elegans sra-2 gene Proteins 0.000 description 7
- 101000829425 Homo sapiens Steroid receptor RNA activator 1 Proteins 0.000 description 7
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 7
- 102100027779 Splicing factor, arginine/serine-rich 19 Human genes 0.000 description 7
- 101001122448 Rattus norvegicus Nociceptin receptor Proteins 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 102100034033 Alpha-adducin Human genes 0.000 description 3
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 3
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 3
- 101100322582 Streptomyces coelicolor (strain ATCC BAA-471 / A3(2) / M145) add1 gene Proteins 0.000 description 2
- 238000011065 in-situ storage Methods 0.000 description 2
- 102100024348 Beta-adducin Human genes 0.000 description 1
- 102100034004 Gamma-adducin Human genes 0.000 description 1
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 1
- 101000799011 Homo sapiens Gamma-adducin Proteins 0.000 description 1
- 101150055297 SET1 gene Proteins 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0007—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/005—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
- G11C13/0026—Bit-line or column circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0023—Address circuits or decoders
- G11C13/0028—Word-line or row circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0021—Auxiliary circuits
- G11C13/0038—Power supply circuits
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Chemical & Material Sciences (AREA)
- Materials Engineering (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种基于忆阻器的精简指令集处理器;忆阻器是一种以电阻来保存“0”、“1”逻辑的非易失性器件;同时,忆阻器可以通过施加一对电压VCOND/VSET来实现“蕴含逻辑”,基于蕴含逻辑可以实现各种数据操作、逻辑运算以及算术运算。所以,忆阻器是一种极具潜力的计算存储融合的器件,基于忆阻器的计算机处理器也成为下一代计算机处理器的研究方向。本发明根据忆阻器的存储计算融合的特性,设计了一种基于忆阻器的计算机处理器,这类新型的处理器将不同于传统计算机必须使用专门的存储器与运算器的架构,是一种计算与存储融合的处理器。相较于传统计算机,基于忆阻器的计算机处理器在速度、并行度、功耗上都会有极大的提升。
Description
技术领域
本发明属于计算机处理器领域,具体涉及一种基于忆阻器的精简指令集处理器。
背景技术
所有现代计算机都遵循着冯·诺依曼架构的设计原则,在这个架构中,计算和存储模块是分离的,它们经由总线连接。在计算机运行时,指令和数据通过总线在处理器和存储器之间被连续运输。然而,在计算机运行时,用于在处理器和存储系统之间移动数据的开销远大于处理器实际计算的开销,这些开销包括功耗、时间和空间等。这种频繁的大开销的数据移动被认为是“冯·诺依曼瓶颈”,只要计算机依然采用冯·诺依曼体系架构,那么冯·诺依曼瓶颈就会一直存在。可以预见,随着时间的推移,冯·诺依曼瓶颈势必会成为限制计算机性能的最大障碍。
我们希望通过从根本上改变计算机的架构来解决这一问题。而基于忆阻器的计算机处理器可能是下一代极具潜力的计算存储融合的计算机处理器。忆阻器是一种有记忆功能的非线性电阻,通过控制电流变化可以改变其阻值。如果把高阻态记为逻辑“0”,低阻态记为逻辑“1”,那么这种随电流变化的电阻就可以作为一种存储器件来保存数据。相较于传统的以高低电压来表示“0”和“1”的易失性电平逻辑,忆阻器根据其阻态来保存逻辑“0”和“1”,在断电后仍然保存其信息,是一种非易失性的存储器件。
2010年,惠普实验室的Borghett等人提出了基于忆阻器的蕴含逻辑:在一对忆阻器分别施加VCOND/VSET这样一对电压脉冲,可以实现一种称之为“蕴含逻辑”的操作。基于蕴含逻辑和清零操作,可以实现所有16种布尔逻辑操作,这种蕴含逻辑通过直接向原位施加电压来实现,操作结果也存储在原位中。由于其计算存储融合的特性,在基于忆阻器的计算机中大量的数据移动开销得以节省。所以,冯·诺依曼瓶颈在基于忆阻器的计算机中是不存在的。
总之,在存储和计算上,忆阻器有其独特的优势。所以,基于忆阻器的计算机处理器可能是新型计算机处理器的研究方向。目前,忆阻器的研究多着重于使用何种材料及工艺能够做出电阻相对稳定,不受施加在相邻单元的电压影响的忆阻器;以及如何使用忆阻器来通过蕴含操作更高效地实现布尔逻辑和算术运算。但是包括忆阻计算机架构、计算资源的调度与分配、并行计算的控制、微指令集等对构建忆阻器计算机系统架构的研究还相对处于初始阶段。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于忆阻器的精简指令集处理器,旨在解决现代计算机内存和处理器之间由于频繁的数据移动而产生的功耗和时间开销的问题。
本发明提供了一种基于忆阻器的精简指令集处理器,包括:基于忆阻器的计算存储芯片,所述计算存储芯片包括:N个计算存储单元,每个计算存储单元作为芯片的一行对应一个片内地址;每个计算存储单元包括M个忆阻单元、标记单元和连通开关;每个忆阻单元包括串联连接的位线开关和忆阻器;N个计算存储单元中的任意两个可通过位于字线上的连通开关连接;每行的M个忆阻单元、标记单元以及连通开关通过字线串联;字线的一端用于连接行选择模块,另一端用于连接电压施加模块;所有计算存储单元中表示同一位的忆阻单元通过位线串联,位线的一端接地,另一端用于连接列选择模块;M是大于等于8的正整数,通常为8的倍数;N的值根据实际需求设定。
其中,计算存储芯片中的N个计算存储单元按功能分为4个区域:指令缓存区、数据区、辅助区和指令区;所述指令缓存区用于缓存即将译码执行的指令;所述数据区用于存储所有涉及到的数据;所述辅助区用于缓存在计算过程中由于多步蕴含而产生的中间结果;所述指令区用于存储所有待执行的指令;所述指令缓存区共1个计算存储单元,所述数据区共P个计算存储单元,所述辅助区共Q个计算存储单元,所述指令区共R个计算存储单元;P,Q,R的值根据实际需求设定,但必须满足数量关系N=P+Q+R+1。芯片的辅助区按功能再划分为若干辅助块,每个辅助块缓存一种特定的数据运算或数据操作在执行过程中由于多步蕴含而产生的中间结果。由于完成一种特定的数据运算或数据操作要执行的蕴含步骤固定,所以每个辅助块所含计算存储单元个数为定值。
更进一步地,每个计算存储单元都带有标记单元,通过字线与每行的M个忆阻单元串联连接。其中,标记单元包括:X位CMOS晶体管,所述X位包括:选中位p,2位电压判断位v1、v2,以及X-3位连通位c1、c2、…cX-3,其中,选中位p用于标记被行选择模块选中的计算存储单元,若某个计算存储单元被行选择模块选中,则该计算存储单元的选中位置位为1,未被选中或已经完成数据运算或数据操作的计算存储单元的选中位置位为0;2位电压判断位v1、v2用于标记应向计算存储单元施加电压的类型,只在选中位p=1时有效;若v1、v2被置位为00,则向计算存储单元施加电压VCLEAR;若v1、v2被置位为01,则向计算存储单元施加电压VCOND;若v1、v2被置位为10,则向计算存储单元施加电压VSET;若v1、v2被置位为11,则不向计算存储单元施加电压;X-3位连通位c1、c2、…cX-3用于标记某个计算存储单元是否与其他计算存储单元连接以进行蕴含,只在选中位p=1时有效;若c1、c2、…、cX-3被置位为全0,则表示该计算存储单元不与任何计算存储单元形成通路;若c1、c2、…、cX-3非全0,则该计算存储单元与另外一个c1、c2、…、cX-3为相同值的计算存储单元通过连通开关形成通路以进行蕴含。除全0外,最多可以支持2X-3-1个并发的蕴含,以及不限个数的清0、置1。
更进一步地,电压施加模块用于向计算存储单元施加实现清0、蕴含、置1的电压。电压施加模块包括:选中感应单元以及3个电压脉冲发生器;选中感应单元用于寻找芯片内所有选中位p被置位为1的计算存储单元,并获取其标记单元中电压判断位v1、v2的值;3个电压脉冲发生器VCLEAR,VCOND,VSET,用于向计算存储单元施加电压脉冲VCLEAR,VCOND,VSET中的一种,电压脉冲发生器根据选中感应单元获取到的选中位p以及电压判断位v1、v2位的值来确定应向哪些计算存储单元施加何种电压脉冲。
更进一步地,所述精简指令集处理器还包括:程序计数器PC,用于记录下一条待执行的指令的片内地址;地址寄存器组,共32个地址寄存器,依次编号为R0~R31,用于缓存部分计算存储单元的片内地址,在指令中作操作数字段用,每个地址寄存器的位数为log2N;其中R0的值总是全0,不缓存任何片内地址;行选择模块,根据PC或地址寄存器的值选中芯片内对应地址的计算存储单元,以备后续的数据运算或数据操作,行选择模块选中一个计算存储单元后,该计算存储单元的选中位p被置位为1;列选择模块,根据指令具体要求操作的数据位数,将行选择模块选中的计算存储单元的部分或全部忆阻单元的位线开关闭合,以控制计算存储单元的哪些忆阻单元将会参与运算;以及指令译码器和控制器,用于对指令缓存中的指令进行译码解析,并根据译码结果给出相应的控制信号完成指令的执行。
更进一步地,所述精简指令集处理器还包括指令模块,所述指令模块包括:基本整数指令模块、单精度浮点指令模块和双精度浮点指令模块;每种指令模块在一块或多块芯片上实现,根据需求选择相应芯片运行以满足不同的应用场景;所述处理器字长为M位,指令长度为M位,指令的种类包括:数据操作指令、逻辑运算指令、算术运算指令和分支跳转指令;所述数据操作指令包括空指令、数据移动指令、立即数数据移动指令、逻辑左移指令、立即数逻辑左移指令、逻辑右移指令、立即数逻辑右移指令、算术右移指令、立即数算术右移指令、符号位扩展指令、立即数符号位扩展指令、零扩展指令和立即数零扩展指令;所述逻辑运算指令包括与指令、立即数与指令、或指令、立即数或指令、非指令、立即数非指令、异或指令、立即数异或指令、与非指令和立即数与非指令;所述算术运算指令包括加法指令、无符号加法指令、立即数加法指令和无符号立即数加法指令;所述分支跳转指令包括无条件跳转指令、立即数无条件跳转指令、相等时跳转指令、立即数相等时跳转指令、不相等时跳转指令、立即数不相等时跳转指令。
更进一步地,处理器指令的最高2位为扩展标志位,所述扩展标志包括“00”、“01”、和“10”;所述扩展标志“00”表示R型指令,源操作数和目的操作数均为地址寄存器;所述扩展标志“01”表示I型指令,源操作数为立即数和地址寄存器,目的操作数为地址寄存器;所述扩展标志“10”表示J型指令,除扩展标志和操作码外均为分支目标地址。扩展标志还包括“11”,表示非法指令。
本发明还提供了一种基于忆阻器的多芯片并行架构处理器,包括:主芯片与Z块计算芯片。主芯片用于进行存储、指令处理和任务分配,划分为数据区、指令区、指令缓存;计算芯片用于进行计算,仅包含辅助区。主芯片与计算芯片之间存在数据通路,数据经由数据通路在主芯片与计算芯片之间传输。在多芯片并行架构下,对指令的取指、译码、地址选择为逐条指令串行执行,数据经由数据通路在主芯片和计算芯片之间的传输、各计算芯片执行计算任务的过程可并行,所以多芯片并行架构可有效提高指令处理速度。
通过本发明所构思的以上技术方案,相较于现代计算机存储和计算分离的架构,基于忆阻器的精简指令集处理器由于其存储计算融合特性以及原位运算特性,数据在芯片中存储的同时能够通过蕴含操作直接对芯片中的数据在原位进行运算,故不存在数据在存储器与处理器之间不断移动而产生的大量功耗与时间开销,从而达到有效节省功耗及缩短处理时间的有益效果。
附图说明
图1为基于忆阻器的精简指令集处理器硬件结构示意图。
图2为芯片内部计算存储单元结构示意图。
图3为连通开关和连通位示意图。
图4为电压施加模块结构示意图。
图5为基于忆阻器的精简指令集处理器指令格式示意图。
图6为基于忆阻器的精简指令集处理器指令流水线示意图。
图7为省略了大部分外部辅助模块的多芯片并行架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种基于忆阻器的精简指令集处理器,包括:基于忆阻器的计算存储芯片(将其称为COMEM芯片),作为处理器的核心部分。所述计算存储芯片包括:
N个计算存储单元(Compute&Memory Unit,以下简称CMU),每个CMU作为芯片的一行,对应一个片内地址;每个CMU包括M个忆阻单元、标记单元和连通开关;每个忆阻单元包括串联连接的位线开关和忆阻器;N个CMU中的任意两个可通过位于字线上的连通开关连接;
每行的M个忆阻单元、标记单元以及连通开关通过字线串联,形成CMU;字线的一端用于连接行选择模块,另一端用于连接电压施加模块;所有CMU中表示同一位的忆阻单元通过位线串联,位线的一端接地,另一端用于连接列选择模块;
M是大于等于8的正整数,通常为8的倍数;N的值根据实际需求设定。
计算存储芯片的N个CMU按功能划分为4个区域:指令缓存、数据区、辅助区和指令区;
其中,指令缓存用于缓存即将译码执行的指令;数据区用于存储所有涉及到的数据;辅助区用于缓存在计算过程中由于多步蕴含而产生的中间结果;指令区用于存储所有待执行的指令;
指令缓存共1个CMU,数据区共P个CMU,辅助区共Q个CMU,指令区共R个CMU;P,Q,R的值根据实际需求设定,但必须满足数量关系N=P+Q+R+1;
芯片的辅助区按功能再划分为若干辅助块,每个辅助块缓存一种特定的数据运算或数据操作在执行过程中由于多步蕴含而产生的中间结果。由于完成一种特定的数据运算或数据操作要执行的蕴含步骤固定,所以每个辅助块所含CMU个数为定值。
还包括:
标记单元,每个CMU都带有标记单元,通过字线与每行的M个忆阻单元串联连接。所述标记单元包括:X位CMOS晶体管(或两端选通管、自选通管等),分别表示:选中位p,用于标记被行选择模块选中的CMU,若某个CMU被行选择模块选中,则该CMU的选中位置位为1,未被选中或已经完成数据运算或数据操作的CMU的选中位置位为0;
2位电压判断位v1、v2,用于标记应向计算存储单元施加电压的类型,只在选中位p=1时有效。若v1、v2被置位为00,则向CMU施加电压VCLEAR;若v1、v2被置位为01,则向CMU施加电压VCOND;若v1、v2被置位为10,则向CMU施加电压VSET;若v1、v2被置位为11,则不向CMU施加电压。
X-3位连通位c1、c2、…cX-3,用于标记某个CMU是否与其他计算存储单元连接以进行蕴含,只在选中位p=1时有效。若c1、c2、…、cX-3被置位为全0,则表示该CMU不与任何CMU形成通路;若c1、c2、…、cX-3非全0,则该CMU与另外一个c1、c2、…、cX-3为相同值的CMU通过连通开关形成通路以进行蕴含。除全0外,最多可以支持2X-3-1个并发的蕴含,以及不限个数的清0、置1。
还包括:
电压施加模块,用于向CMU施加实现清0、蕴含、置1的电压。如图4所示,电压施加模块包括:选中感应单元,用于寻找芯片内所有选中位p被置位为1的CMU,并获取其标记单元中电压判断位v1、v2的值;
3个电压脉冲发生器:VCLEAR,VCOND,VSET,用于向CMU施加电压脉冲VCLEAR,VCOND,VSET其中之一,电压脉冲发生器根据选中感应单元获取到的选中位p,电压判断位v1、v2位的值来确定应向哪些CMU施加何种电压脉冲。
程序计数器PC,用于记录下一条待执行的指令的片内地址;
地址寄存器组,共32个地址寄存器,依次编号为R0~R31,用于缓存部分CMU的片内地址,在指令中作操作数字段用,每个地址寄存器的位数为log2N。其中R0的值总是全0,不缓存任何片内地址;
行选择模块,根据PC或地址寄存器的值选中芯片内对应地址的CMU,以备后续的数据运算或数据操作,行选择模块选中一个CMU后,该CMU的选中位p被置位为1。
列选择模块,根据指令具体要求操作的数据位数,将行选择模块选中的CMU的部分或全部忆阻单元的位线开关闭合,以控制CMU的哪些忆阻单元(位)将会参与运算。
指令译码器和控制器,对指令缓存中的指令进行译码解析,并根据译码结果给出相应的控制信号,完成指令的执行。
所述处理器的指令系统以模块化形式开发,指令模块包括:基本整数指令模块、单精度浮点指令模块、双精度浮点指令模块。每种指令模块在一块或多块芯片上实现,实际情况中根据需求选择相应芯片运行,以满足不同的应用场景。
所述处理器字长为M位,指令长度为M位,指令的种类包括:数据操作指令、逻辑运算指令、算术运算指令、分支跳转指令。
所述数据操作指令包括空指令、数据移动指令、立即数数据移动指令、逻辑左移指令、立即数逻辑左移指令、逻辑右移指令、立即数逻辑右移指令、算术右移指令、立即数算术右移指令、符号位扩展指令、立即数符号位扩展指令、零扩展指令、立即数零扩展指令。
所述逻辑运算指令包括与指令、立即数与指令、或指令、立即数或指令、非指令、立即数非指令、异或指令、立即数异或指令、与非指令、立即数与非指令。
所述算术运算指令包括加法指令、无符号加法指令、立即数加法指令、无符号立即数加法指令。
所述分支跳转指令包括无条件跳转指令、立即数无条件跳转指令、相等时跳转指令、立即数相等时跳转指令、不相等时跳转指令、立即数不相等时跳转指令。
处理器指令的最高2位为扩展标志位。其中,扩展标志包括“00”、“01”、和“10”。扩展标志“00”表示R型指令,源操作数和目的操作数均为地址寄存器;扩展标志“01”表示I型指令,源操作数为立即数和地址寄存器,目的操作数为地址寄存器;扩展标志“10”表示J型指令,除扩展标志和操作码外均为分支目标地址。扩展标志还包括“11”,表示非法指令。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,以N=1024,M=32,X=5的计算存储芯片,基本整数指令模块为实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明。
基于忆阻器的精简指令集处理器如图1所示,包括:
基于忆阻器的计算存储芯片,作为处理器的核心部分。计算存储芯片上共有1024个CMU,每个CMU作为芯片的一行,对应一个log21024=10位的片内地址;
计算存储芯片的1024个CMU按功能划分为4个区域:指令缓存、数据区、辅助区和指令区。各区域的片内地址范围、CMU个数如表1所示。
表1芯片区域地址分配
区域 | 地址范围 | CMU个数 |
指令缓存 | 0x000 | 1 |
数据区 | 0x001~0x1FF | 511 |
辅助区 | 0x200~0x2FF | 256 |
指令区 | 0x300~0x3FF | 256 |
芯片的辅助区按功能再划分为若干辅助块,每个辅助块缓存一种特定的数据运算或数据操作在执行过程中由于多步蕴含而产生的中间结果。由于完成一种特定的数据运算或数据操作要执行的蕴含步骤固定,所以每个辅助块所含CMU个数为定值。表2给出了部分辅助块的CMU的个数以及命名,为方便忆阻器基本操作的描述,将辅助CMU按“辅助的数据运算或数据操作+序号”来命名,在忆阻器清0、蕴含、置1操作的描述中使用其名称进行描述,不描述其片内地址。
表2芯片辅助区部分辅助块的分配及命名
每个辅助块序号最大的辅助单元,如SRA2、XOR5等,用于缓存数据运算或数据操作的结果,若需要将缓存的结果输出至其他CMU中,则通过一次数据移动操作即可。
含有立即数的数据操作和运算需要一个额外的辅助单元用于写入立即数,规定暂存立即数的辅助单元序号为0,如SRAI0、ADDI0等。
也有部分特例,如符号位扩展操作SNE、无条件跳转操作JAR不需要辅助单元,立即数符号位扩展操作SNEI、立即数无条件跳转操作JARI只需1个辅助单元SNEI0,既用于写入立即数,也用于暂存操作结果;数据移动操作不需要暂存中间结果的单元等。
一些数据操作和运算需要调用其他操作和运算来完成指定功能,如加法运算需要调用到异或和与非运算、立即数相等跳转操作需要调用到符号位扩展操作和异或运算。这些被调用的操作和运算仍然在各自的辅助块内完成,得出的结果再通过数据移动操作写回调用它的操作和运算中。
CMU结构如图2所示,每个CMU包括32个忆阻单元、标记单元和连通开关;每个忆阻单元包括串联连接的位线开关和忆阻器;任意两个CMU可通过位于字线上的连通开关连接;
每行的32个忆阻单元、标记单元以及连通开关通过字线串联,形成CMU;字线的一端用于连接行选择模块,另一端用于连接电压施加模块;所有CMU中表示同一位的忆阻单元通过位线串联,位线的一端接地,另一端用于连接列选择模块;1024个CMU中的任意两个在需要进行蕴含时可通过位于字线上的连通开关连接;
每个CMU都带有标记单元,通过字线与每行的32个忆阻单元串联连接。所述标记单元包括5位CMOS晶体管,分别表示:
选中位p,用于标记被行选择模块选中的CMU,若某个CMU被行选择模块选中,则该CMU的选中位置位为1,未被选中或已经完成数据运算或数据操作的CMU的选中位置位为0;
2位电压判断位v1、v2,用于标记应向计算存储单元施加电压的类型,只在选中位p=1时有效。若v1、v2被置位为00,则向CMU施加电压VCLEAR;若v1、v2被置位为01,则向CMU施加电压VCOND;若v1、v2被置位为10,则向CMU施加电压VSET;若v1、v2被置位为11,则不向CMU施加电压。
2位连通位c1、c2,用于标记某个CMU是否与其他计算存储单元连接以进行蕴含,如图3所示,只在选中位p=1时有效。若c1、c2被置位为全0,则表示该CMU不与任何CMU形成通路;若c1、c2非全0,则该CMU与另外一个c1、c2为相同值的CMU通过连通开关形成通路以进行蕴含。除全0外,最多可以支持3个并发的蕴含,以及不限个数的清0、置1。
所述基于忆阻器的精简指令集处理器还包括一些支持指令处理和执行的模块,包括:
电压施加模块,用于向CMU施加实现清0、蕴含、置1的电压。所述电压施加模块包括:选中感应单元,用于寻找芯片内所有选中位p被置位为1的CMU,并获取其标记单元中电压判断位v1、v2的值;
3个电压脉冲发生器:VCLEAR,VCOND,VSET,用于向CMU施加电压脉冲VCLEAR,VCOND,VSET其中之一,电压脉冲发生器根据选中感应单元获取到的选中位p,电压判断位v1、v2位的值来确定应向哪些CMU施加何种电压脉冲。
程序计数器PC,用于记录下一条待执行的指令的片内地址;
地址寄存器组,共32个地址寄存器,依次编号为R0~R31,用于缓存部分CMU的片内地址,在指令中作操作数字段用,每个地址寄存器的位数为log21024=10位。其中R0的值总是全0,不缓存任何片内地址;
行选择模块,根据PC或地址寄存器的值选中芯片内对应地址的CMU,以备后续的数据运算或数据操作,行选择模块选中一个CMU后,该CMU的选中位p被置位为1。
列选择模块,根据指令具体要求操作的数据位数,将行选择模块选中的CMU的部分或全部忆阻单元的位线开关闭合,以控制CMU的哪些忆阻单元(位)将会参与运算。
指令译码器和控制器,对指令缓存中的指令进行译码解析,并根据译码结果给出相应的控制信号,完成指令的执行。
在基于忆阻器的精简指令集处理器上完成例1:对片内地址为A1~A6的单元实施以下并发操作:A1,A2实施蕴含操作A2[11:0]←A1[11:0]IMP A2[11:0];对单元A3,A4实施蕴含操作A4←A3 IMP A4;对单元A5实施清0操作CLEAR(A5[31:16]);对单元A6不进行任何操作。
实施例1的操作序列如下,操作开始前全部位线开关和连通开关都默认为断开状态:
(1.1)行选择模块分别选中对应地址的这6个CMU,将它们的选中位p均置为1。
(1.2)进行一轮标记位置位:
(1.3)连通开关根据连通位c1、c2的值将A1,A2连通,将A3,A4连通,A5,A6不与任何单元连通;列选择模块配合行选择模块闭合A1,A2的11~0位位线开关,闭合A3,A4的全部32位位线开关,闭合A5的第31~16位位线开关。
(1.4)电压施加模块查找到所有p=1的单元后,根据电压判断位v1、v2的值,对A1,A3施加电压VCOND,对A2,A4施加电压VSET,对A5施加电压VCLEAR,实现并发的蕴含操作A2[11:0]←A1[11:0]IMP A2[11:0],A4←A3 IMP A4及清0操作CLEAR(A5[31:16]),对A6不进行任何操作。完成后断开A1~A6的连通开关和位线开关。
(1.5)最后将A1~A6的选中位p均置为0。
指令系统,以基本整数指令模块的32位定长指令为例。基于忆阻器的精简指令集处理器指令系统的指令类型分为R型,I型,J型三种,由指令最高2位扩展标志位决定,若扩展标志位为“00”则为R型指令,“01”则为I型指令,“10”则为J型指令,“11”为非法指令,非法指令用于实现基于忆阻器的精简指令集处理器后期升级和扩展,指令格式如图5所示。其中,opcode为操作码;rd为目的地址寄存器;rs1为源地址寄存器1;rs2为源地址寄存器2;#imm为立即数;#shamt为移位位数,#label为分支跳转目标地址。
当扩展标志位为“00”时,处理器指令格式由高位至低位依次为:2位扩展标志、5位操作码、5位目的地址寄存器、5位源地址寄存器1、5位源地址寄存器2、5位全0、5位数据移位位数。
当扩展标志位为“01”时,处理器指令格式由高位至低位依次为:2位扩展标志、5位操作码、5位目的地址寄存器、5位源地址寄存器、10位立即数、5位数据移位位数。
当扩展标志位为“10”时,处理器指令格式由高位至低位依次为:2位扩展标志、5位操作码、25位分支跳转目标地址/5位目的地址寄存器+20位全0。
当扩展标志位为“11”时,处理器指令格式由高位至低位依次为:2位扩展标志、30位未定义字。具体的指令定义如表3所示:
表3 32位定长指令基本整数指令模块所含指令。
以上指令的指令编码如表4所示。在指令编码表中,若地址寄存器字段rs1,rs2或rs为全0,则表示本条指令不需要该字段,该字段在本条指令中无意义,不表示寄存器R0;另外,若非数据移位指令,则#shamt字段为全0。
表4 32位定长指令基本整数指令模块的指令编码
基于忆阻器的精简指令集处理器对指令的处理采用流水线方式,将一条指令的处理过程分为取指令,指令译码,指令执行三个阶段,如图6所示。指令存储于芯片的指令区,行选择模块根据程序计数器当前的值选中芯片指令区对应地址的CMU,通过数据移动操作将其写入指令缓存中。
对于顺序执行的指令,每一条指令取指结束后,程序计数器的值+1,进入下一条指令的取指阶段。如果是分支跳转指令且满足跳转条件,程序计数器的值会更改为要跳转的目标地址。
基于忆阻器的基本操作,完成例2:程序计数器中下一条待执行指令的片内地址为0x31D,完成该指令的取指令阶段。
实施例2的操作序列如下,操作开始前全部位线开关和连通开关都默认为断开状态:
(2.1)行选择模块根据程序计数器中的值选中片内地址为0x31D的CMU(为方便描述,将其记为单元A)、辅助区数据移动辅助块的辅助单元MOV1、指令缓存的地址0x000(为方便描述,将其记为单元I),将它们的选中位p均置为1。
(2.2)进行一轮标记位置位:
CMU | c1 | c2 | v1 | v2 |
A | 0 | 0 | 1 | 1 |
MOV1 | 0 | 0 | 0 | 0 |
I | 0 | 0 | 0 | 0 |
(2.3)列选择模块配合行选择模块闭合MOV1,I的全部32位位线开关。
(2.4)电压施加模块根据v1、v2的值,对MOV1,I施加电压VCLEAR,实现并发的清0操作CLEAR(MOV1),CLEAR(I),对A不进行任何操作;完成后断开MOV1,I的位线开关。
(2.5)进行一轮标记位置位:
CMU | c1 | c2 | v1 | v2 |
A | 0 | 1 | 0 | 1 |
MOV1 | 0 | 1 | 1 | 0 |
I | 0 | 0 | 1 | 1 |
(2.6)连通开关根据c1、c2的值将A与MOV1连通,I不与任何单元连通;列选择模块配合行选择模块闭合A,MOV1的全部32位位线开关。
(2.7)电压施加模块查找到所有p=1的单元后,根据电压判断位v1、v2的值,对A施加电压VCOND,对MOV1施加电压VSET,实现蕴含操作MOV1←A IMP MOV1,对I不进行任何操作;完成后断开A,MOV1的位线开关和连通开关。
(2.8)进行一轮标记位置位:
CMU | c1 | c2 | v1 | v2 |
A | 0 | 0 | 1 | 1 |
MOV1 | 0 | 1 | 0 | 1 |
I | 0 | 1 | 1 | 0 |
(2.9)连通开关根据c1、c2的值将MOV1与I连通,A不与任何单元连通,列选择模块配合行选择模块闭合MOV1,I的全部32位位线开关。
(2.10)电压施加模块根据v1、v2的值,对MOV1施加电压VCOND,对I施加电压VSET,实现蕴含操作I←MOV1 IMP I,对A不进行任何操作;完成后断开MOV1,I的位线开关和连通开关。
(2.11)最后将A,MOV1,I的选中位p均置为0。
例2所示的取指令阶段同时为数据移动的操作步骤,也是所有指令的取指令阶段操作步骤。
由例1和例2可知,除初始的地址生成、选中以及最后的取消选中外,一次(或是可并发的)蕴含/清0/置1操作要经过以下几个步骤:标记位置位→闭合连通/位线开关→施加电压以实现蕴含/清0/置1操作→断开连通/位线开关。在后续的指令执行实例中,标记位置位、闭合位线/连通开关、断开位线/连通开关等控制步骤均略去不述,仅给出初始的地址生成、选中,完成指令功能所需经过的蕴含/清0/置1操作,以及最后的取消选中操作。
取指令阶段结束后进入指令译码和执行阶段:指令译码器对指令缓存中的指令进行完整译码,根据扩展标志位和操作码判断指令类型,提取指令中的立即数和地址寄存器字段,选择相应的操作,由控制器发出控制信号来完成指令的执行。每种指令的执行阶段都对应着不同的操作步骤,这些操作步骤由若干蕴含/清0/置1操作构成,来完成指令所描述的功能。下面给出一些指令实例在基于忆阻器的精简指令集处理器上的实现方式。
逻辑左移指令sll、立即数逻辑左移指令slli、逻辑右移指令srl、立即数逻辑右移指令srli、算术右移指令sra、立即数算术右移指令srai都属于数据操作指令中功能类似的数据移位指令。现以算术右移指令为例,给出其实现步骤。
例3:算术右移指令sra R1,R2,#16,假设R1=0x01F,R2=0x03A:将源地址寄存器R2指向的地址为0x03A的CMU中的数据算术右移16位,结果写入目的地址寄存器R1指向的地址为0x01F的CMU中。
实现步骤如下:
(3.1)取指令,参照例2的取指令操作步骤。
(3.2)指令经译码后,行选择模块根据地址寄存器R1,R2的值分别选中片内地址0x01F(为方便描述,将其记为单元A1)、片内地址0x03A(为方便描述,将其记为单元A2)、以及算术右移辅助块中的辅助单元SRA1~SRA2,将它们的选中位p均置为1。
(3.3)实现并发的清0操作CLEAR(A1),CLEAR(SRA1),CLEAR(SRA2)。
(3.4)初始i=16,j=0,实现蕴含操作SRA1[j]←A2[i]IMP SRA1[j],完成后i=i+1,j=j+1。若i≤31,j≤15,则循环该步骤;若i>31,j>15,则该步骤结束。
(3.5)读取A2中数据的最高位,若最高位为1,则实现置1操作SET(SRA2[31:16])。若A2中数据的最高位为0,则该步骤不执行。
(3.6)实现蕴含操作SRA2[15:0]←SRA1[15:0]IMP SRA1[15:0]。
(3.7)通过一次数据移动操作将SRA2中的数据写入A1中。
(3.8)最后将A1,A2,SRA1,SRA2的选中位p均置为0。
符号位扩展指令sne、立即数符号位扩展指令snei、零扩展指令zre、立即数零扩展指令zeri都属于数据操作指令中功能类似的数据扩展指令。现以立即数符号位扩展指令为例,给出其实现步骤。
例4:立即数符号位扩展指令snei R25,#0x296,假设R25=0x091:将立即数0x296(1010010110)进行符号位扩展为32位,结果写入目的地址寄存器R25指向的地址为0x091的CMU中。
实现步骤如下:
(4.1)取指令,参照例2的取指令操作步骤。
(4.2)指令经译码后,行选择模块根据地址寄存器R25的值选中片内地址0x091(为方便描述,将其记为单元A)、以及立即数符号位扩展辅助块中的辅助单元SNEI0的地址,将它们的选中位p均置为1。
(4.3)实现并发的清0操作CLEAR(A),CLEAR(SNEI0)。
(4.4)将立即数0x296写入SNEI0中。
(4.5)读取SNEI0中数据的最高位,读得其最高位为1,实现置1操作SET(SNEI0[31:10])。(若数据的最高位为0,则该步骤不执行)。
(4.6)通过一次数据移动操作将SNEI0中的数据写入A中。
(4.7)最后将A,SNEI0的选中位p均置为0。
与指令and、立即数与指令andi、或指令or、立即数或指令ori、非指令not、立即数非指令noti、异或指令xor、立即数异或指令xori、与非指令nand、立即数与非指令nandi都属于功能类似的逻辑运算指令。现以异或指令为例,给出其实现步骤。
例5:异或指令xor R10,R3,R17,假设R10=0x010,R3=0x011,R17=0x012:将源地址寄存器R3指向的地址为0x011的CMU中的数据与源地址寄存器R17指向的地址为0x012的CMU中的数据进行逻辑异或运算,结果写入目的地址寄存器R10指向的地址为0x010的CMU中。
实现步骤如下:
(5.1)取指令,参照例2的取指令操作步骤。
(5.2)指令经译码后,行选择模块根据地址寄存器R10,R3,R17的值选中片内地址0x010(为方便描述,将其记为单元A3)、片内地址0x011(为方便描述,将其记为单元A2)、片内地址0x012(为方便描述,将其记为单元A1)、以及逻辑异或辅助块中的辅助单元XOR1~XOR5的地址,将它们的选中位p均置为1。
(5.3)实现并发的清0操作CLEAR(A3),CLEAR(XOR0),CLEAR(XOR1),CLEAR(XOR2),CLEAR(XOR3),CLEAR(XOR4),CLEAR(XOR5)。
(5.4)实现并发的蕴含操作XOR1←A1 IMP XOR1,XOR2←A2 IMP XOR2。
(5.5)实现并发的蕴含操作XOR3←XOR1 IMP XOR3,XOR4←XOR2 IMP XOR4。
(5.5)实现并发的蕴含操作XOR3←A2 IMP XOR3,XOR4←A1 IMP XOR4。
(5.6)实现蕴含操作XOR5←XOR3 IMP XOR5。
(5.7)实现蕴含操作XOR5←XOR4 IMP XOR5。
(5.8)通过一次数据移动操作将XOR5中的数据写入A3中。
(5.9)最后将A1~A3,XOR1~XOR5的选中位p均置为0。
相等时跳转指令beq、立即数相等时跳转指令beqi、不相等时跳转指令bne、立即数不相等时跳转指令bnei都属于分支跳转指令中功能类似的有条件跳转指令。现以立即数相等时跳转指令为例,给出其实现步骤。
例6:立即数相等时跳转指令beqi R1,R2,#0x001,假设R1=0x3FD,R2=0x10C:将立即数#0x001进行符号位扩展为32位,然后与源地址寄存器R2指向的地址为0x10C的CMU中的数据进行比较,若相等,则下一条指令跳转至目的地址寄存器R1指向的地址为0x3FD的CMU中的指令,假设地址为0x10C的CMU中的数据为0x00000001。
实现步骤如下:
(6.1)取指令,参照例2的取指令操作步骤。
(6.2)指令经译码后,行选择模块根据地址寄存器R1,R2的值选中片内地址0x3FD(为方便描述,将其记为单元A1)、片内地址0x10C(为方便描述,将其记为单元A2)、以及立即数相等时跳转辅助块中的辅助单元BEQI0~BEQI1的地址,将它们的选中位p均置为1。
(6.3)通过一次立即数符号位扩展操作将立即数#0x001写入BEQI0中,并进行符号位扩展为32位。
(6.4)将BEQI0中的数据与A2中的数据进行异或运算,结果写入BEQI1中。
(6.5)若BEQI1中的异或结果为0,则说明相等,程序计数器的下一条待执行指令的地址改为R1中的地址A1(0x3FD)。
(6.6)最后将A1,A2,BEQI0,BEQI1的选中位p均置为0。
无条件跳转指令jar、立即数无条件跳转指令jari都属于分支跳转指令中功能类似的无条件跳转指令。现以无条件跳转指令为例,给出其实现步骤。
例7:无条件跳转指令jar R18,假设R18=0x311:下一条指令跳转至地址寄存器R18指向的地址为0x311的CMU中的指令。
实现步骤如下:
(7.1)取指令,参照例2的取指令操作步骤。
(7.2)指令经译码后,行选择模块根据地址寄存器R1的值选中片内地址0x311(为方便描述,将其记为单元A),将它的选中位p置为1。
(7.3)程序计数器的下一条待执行指令的地址改为R18中的地址A(0x311)。
(7.4)最后将A的选中位p置为0。
加法指令add、立即数加法指令addi、无符号加法指令addu、立即数无符号加法指令addiu都属于算术运算指令中功能类似的加法指令。
现以加法指令为例,给出其实现步骤。
例8:加法指令add R6,R12,R7,假设R6=0x147,R12=0x190,R7=0x191:将源地址寄存器R12指向的地址为0x190的CMU中的数据与源地址寄存器R7指向的地址为0x191的CMU中的数据当作有符号数进行加法运算,结果写入目的地址寄存器R6指向的地址为0x147的CMU中。
实现步骤如下:
(8.1)取指令,参照例2的取指令操作步骤。
(8.2)指令经译码后,行选择模块根据地址寄存器R12,R7,R6的值选中片内地址0x190(为方便描述,将其记为单元A1)、片内地址0x191(为方便描述,将其记为单元A2)、片内地址0x147(为方便描述,将其记为单元A3)、以及加法辅助块中的辅助单元ADD1~ADD5的地址,将它们的选中位p均置为1。
(8.3)将A1中的数据与A2中的数据进行异或运算,结果写入ADD1中。
(8.4)初始i=0,将A1中数据的第i位与A2中数据的第i位进行与非运算,结果写入ADD2的第i位中。
(8.5)将ADD1中数据的第i位与ADD4中数据的第i位进行与非运算,结果写入ADD3的第i位中。
(8.6)将ADD2中数据的第i位与ADD3中数据的第i位进行与非运算,结果写入ADD4的第i+1位中。
当i<31时,i=i+1,循环(8.4)~(8.6);当i≥31时,结束循环,进入(8.7)。
(8.7)将ADD1中的数据与ADD4中的数据进行异或运算,结果写入ADD5中。
(8.8)通过一次数据移动操作将ADD5中的数据写入A3中。
(8.9)最后将A1~A3,ADD1~ADD5的选中位p均置为0。
现代计算机的多处理器并行架构可以有效提高运行速度,在基于忆阻器的精简指令集处理器中,同样可以考虑一种多芯片并行架构,在无相关性蕴含可并行的基础上,充分开发数据运算或数据操作的并行性。
图7为省略了大部分外部辅助模块的多芯片并行架构。在多芯片并行架构中,多块COMEM芯片按其在并行架构中承担的职责分为主芯片和若干个计算芯片,图7所示的架构中计算芯片数量为3。
主芯片和计算芯片内部的CMU结构与图2所示的完全相同,但芯片规模、外部模块及功能分区与单芯片架构有所差异:主芯片的CMU划分为指令缓存、数据区、指令区,包括所有的外部辅助模块,用于进行存储、指令处理和任务分配,规模相对较大;计算芯片仅含辅助区,按表2的方式划分为多个辅助块以完成不同的运算或操作,仅包括行选择、列选择、控制器与电压施加外部辅助模块,用于进行计算,规模相对较小。
主芯片与计算芯片之间存在数据通路,数据经由数据通路在主芯片和计算芯片之间传输。数据通路的本质是数据移动操作的辅助块,数据在主芯片和计算芯片之间的传输实际上是通过两步蕴含实现的数据移动操作。由于无相关性蕴含可并行,所以可允许主芯片同时向多个计算芯片或是同一计算芯片传送不同CMU的数据。
在多芯片并行架构下,对指令的取指、译码、地址选择依然是逐条指令串行执行,可并行的部分为数据经由数据通路在主芯片和计算芯片之间的传输、以及各计算芯片执行计算任务的过程。
多芯片并行架构的指令处理过程为:主芯片根据当前PC值从指令区逐条取指并译码,根据指令中地址寄存器的值选中对应CMU,然后将对应CMU中的数据以及译码得到的控制信号按负载均衡算法分配至某一计算芯片中,由计算芯片完成指令要求的功能,此时主芯片就可以去取指译码下一条指令。完成计算任务后,计算结果再经由数据通路由计算芯片返回主芯片的数据区。简而言之,多芯片并行架构是将指令的取指、译码、地址选择和指令的执行分开进行处理,取指、译码、地址选择在主芯片完成,指令的执行在计算芯片完成。
例9:在基于忆阻器的精简指令集处理器,1主芯片,2计算芯片的多芯片并行架构下完成2条顺序执行且无数据相关的加法指令:
①0x300:add R1,R2,R3,假设R1=0x001,R2=0x002,R3=0x003,
②0x301:add R4,R5,R6,假设R1=0x004,R2=0x005,R3=0x006,
其中,地址寄存器指示的地址均为主芯片的片内地址,0x300,0x301分别为这2条指令在主芯片中指令区的片内地址。在多芯片并行架构下完成这两条指令的步骤如下:
(9.1)主芯片根据PC当前值,将指令①取至指令缓存中,译码得到指令的控制信号,地址选择选中地址为0x002和0x003的CMU,将其中的数据经由数据通路传送至计算芯片Z1中,控制信号由主芯片控制器传送至计算芯片Z1的控制器中。由计算芯片Z1完成指令①要求的加法运算,加法运算的具体操作步骤参考例8。
(9.2)主芯片根据PC当前值,将指令②取至指令缓存中,译码得到指令的控制信号,地址选择选中地址为0x005和0x006的CMU,将其中的数据经由数据通路传送至计算芯片Z2中,控制信号由主芯片控制器传送至计算芯片Z2的控制器中。由计算芯片Z2完成指令②要求的加法运算,此时主芯片可以转去取指、译码其他指令。
(9.3)Z1和Z2分别完成指令①和指令②要求的加法运算后,将加法运算的结果(可并行地)经由数据通路返回主芯片对应地址的计算存储单元0x001和0x004中。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于忆阻器的精简指令集处理器,其特征在于,包括:基于忆阻器的计算存储芯片,所述计算存储芯片包括:N个计算存储单元,每个计算存储单元作为芯片的一行对应一个片内地址;
每个计算存储单元包括M个忆阻单元、标记单元和连通开关;每个忆阻单元包括串联连接的位线开关和忆阻器;N个计算存储单元中的任意两个可通过位于字线上的连通开关连接;
每行的M个忆阻单元、标记单元以及连通开关通过字线串联;字线的一端用于连接行选择模块,另一端用于连接电压施加模块;
所有计算存储单元中表示同一位的忆阻单元通过位线串联,位线的一端接地,另一端用于连接列选择模块;
M是大于等于8的正整数;
所述标记单元包括:X位CMOS晶体管,所述X位包括:选中位p,2位电压判断位v1、v2,以及X-3位连通位c1、c2、...cX-3;
所述选中位p用于标记被行选择模块选中的计算存储单元;
所述2位电压判断位v1、v2用于标记应向计算存储单元施加电压的类型,只在选中位p=1时有效;
所述X-3位连通位c1、c2、...cX-3用于标记某个计算存储单元是否与其他计算存储单元连接以进行蕴含,只在选中位p=1时有效。
2.根据权利要求1所述的精简指令集处理器,其特征在于,所述计算存储芯片中的N个计算存储单元按功能分为4个区域:指令缓存区、数据区、辅助区和指令区;
所述指令缓存区用于缓存即将译码执行的指令;
所述数据区用于存储所有涉及到的数据;
所述辅助区用于缓存在计算过程中由于多步蕴含而产生的中间结果;
所述指令区用于存储所有待执行的指令;
所述指令缓存区共1个计算存储单元,所述数据区共P个计算存储单元,所述辅助区共Q个计算存储单元,所述指令区共R个计算存储单元;P,Q,R的值根据实际需求设定,但必须满足数量关系N=P+Q+R+1。
3.根据权利要求1所述的精简指令集处理器,其特征在于,所述电压施加模块包括:选中感应单元以及3个电压脉冲发生器;
所述选中感应单元用于寻找芯片内所有选中位p被置位为1的计算存储单元,并获取其标记单元中电压判断位v1、v2的值;
3个电压脉冲发生器VCLEAR,VCOND,VSET,用于向计算存储单元施加电压脉冲VCLEAR,VCOND,VSET中的一种,电压脉冲发生器根据选中感应单元获取到的选中位p以及电压判断位v1、v2位的值来确定应向哪些计算存储单元施加何种电压脉冲。
4.根据权利要求1-3任一项所述的精简指令集处理器,其特征在于,所述精简指令集处理器还包括:
程序计数器PC,用于记录下一条待执行的指令的片内地址;
地址寄存器组,共32个地址寄存器,依次编号为R0~R31,用于缓存部分计算存储单元的片内地址,在指令中作操作数字段用,每个地址寄存器的位数为log2N;其中R0的值总是全0,不缓存任何片内地址;
行选择模块,根据PC或地址寄存器的值选中芯片内对应地址的计算存储单元,以备后续的数据运算或数据操作,行选择模块选中一个计算存储单元后,该计算存储单元的选中位p被置位为1;
列选择模块,根据指令具体要求操作的数据位数,将行选择模块选中的计算存储单元的部分或全部忆阻单元的位线开关闭合,以控制计算存储单元的哪些忆阻单元将会参与运算;以及
指令译码器和控制器,用于对指令缓存中的指令进行译码解析,并根据译码结果给出相应的控制信号完成指令的执行。
5.根据权利要求1-3任一项所述的精简指令集处理器,其特征在于,所述精简指令集处理器还包括指令模块,所述指令模块包括:基本整数指令模块、单精度浮点指令模块和双精度浮点指令模块;每种指令模块在一块或多块芯片上实现,根据需求选择相应芯片运行以满足不同的应用场景。
6.根据权利要求5所述的精简指令集处理器,其特征在于,所述处理器字长为M位,指令长度为M位,指令的种类包括:数据操作指令、逻辑运算指令、算术运算指令和分支跳转指令;
所述数据操作指令包括空指令、数据移动指令、立即数数据移动指令、逻辑左移指令、立即数逻辑左移指令、逻辑右移指令、立即数逻辑右移指令、算术右移指令、立即数算术右移指令、符号位扩展指令、立即数符号位扩展指令、零扩展指令和立即数零扩展指令;
所述逻辑运算指令包括与指令、立即数与指令、或指令、立即数或指令、非指令、立即数非指令、异或指令、立即数异或指令、与非指令和立即数与非指令;
所述算术运算指令包括加法指令、无符号加法指令、立即数加法指令和无符号立即数加法指令;
所述分支跳转指令包括无条件跳转指令、立即数无条件跳转指令、相等时跳转指令、立即数相等时跳转指令、不相等时跳转指令、立即数不相等时跳转指令。
7.根据权利要求5所述的精简指令集处理器,其特征在于:所述精简指令集处理器中的指令的最高2位为扩展标志位,所述扩展标志包括“00”、“01”、和“10”;
所述扩展标志“00”表示R型指令,源操作数和目的操作数均为地址寄存器;
所述扩展标志“01”表示I型指令,源操作数为立即数和地址寄存器,目的操作数为地址寄存器;
所述扩展标志“10”表示J型指令,除扩展标志和操作码外均为分支目标地址; 扩展标志还包括“11”,表示非法指令。
8.一种基于忆阻器的多芯片并行架构处理器,包括:主芯片与Z块计算芯片;主芯片与Z块计算芯片均包括:N个计算存储单元,每个计算存储单元作为芯片的一行对应一个片内地址;每个计算存储单元包括M个忆阻单元、标记单元和连通开关;每个忆阻单元包括串联连接的位线开关和忆阻器;N个计算存储单元中的任意两个可通过位于字线上的连通开关连接;每行的M个忆阻单元、标记单元以及连通开关通过字线串联;字线的一端用于连接行选择模块,另一端用于连接电压施加模块;所有计算存储单元中表示同一位的忆阻单元通过位线串联,位线的一端接地,另一端用于连接列选择模块;M是大于等于8的正整数;主芯片用于进行存储、指令处理和任务分配,划分为数据区、指令区、指令缓存;计算芯片用于进行计算,仅包含辅助区;
主芯片与计算芯片之间存在数据通路,数据经由数据通路在主芯片与计算芯片之间传输;
在多芯片并行架构下,对指令的取指、译码、地址选择为逐条指令串行执行,数据经由数据通路在主芯片和计算芯片之间的传输、各计算芯片执行计算任务的过程可并行,所以多芯片并行架构可有效提高指令处理速度。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811268340.7A CN109582364B (zh) | 2018-10-29 | 2018-10-29 | 基于忆阻器的精简指令集处理器 |
PCT/CN2018/118085 WO2020087619A1 (zh) | 2018-10-29 | 2018-11-29 | 基于忆阻器的精简指令集处理器 |
US17/054,529 US11830547B2 (en) | 2018-10-29 | 2018-11-29 | Reduced instruction set processor based on memristor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811268340.7A CN109582364B (zh) | 2018-10-29 | 2018-10-29 | 基于忆阻器的精简指令集处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582364A CN109582364A (zh) | 2019-04-05 |
CN109582364B true CN109582364B (zh) | 2020-07-28 |
Family
ID=65921072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811268340.7A Active CN109582364B (zh) | 2018-10-29 | 2018-10-29 | 基于忆阻器的精简指令集处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11830547B2 (zh) |
CN (1) | CN109582364B (zh) |
WO (1) | WO2020087619A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124494B (zh) * | 2019-12-17 | 2023-07-25 | 天津国芯科技有限公司 | 一种cpu中加速无条件跳转的方法及电路 |
CN112599168B (zh) * | 2020-12-08 | 2022-05-20 | 华中科技大学 | 一种忆阻器存内计算系统的误操作检测装置及系统 |
CN113010213B (zh) * | 2021-04-15 | 2022-12-09 | 清华大学 | 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571949A (zh) * | 2014-12-22 | 2015-04-29 | 华中科技大学 | 基于忆阻器实现计算与存储融合的处理器及其操作方法 |
CN106128503A (zh) * | 2016-06-20 | 2016-11-16 | 北京大学 | 基于忆阻器的运算存储阵列设备及其操作方法 |
CN108346446A (zh) * | 2017-01-23 | 2018-07-31 | 西部数据技术公司 | 具有双向阈值型选择器的高密度3d垂直reram |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8314024B2 (en) * | 2008-12-19 | 2012-11-20 | Unity Semiconductor Corporation | Device fabrication |
CN101256546A (zh) * | 2007-03-01 | 2008-09-03 | 黄新亚 | 32位微处理器 |
US8510239B2 (en) * | 2010-10-29 | 2013-08-13 | International Business Machines Corporation | Compact cognitive synaptic computing circuits with crossbar arrays spatially in a staggered pattern |
US8934292B2 (en) * | 2011-03-18 | 2015-01-13 | Sandisk 3D Llc | Balanced method for programming multi-layer cell memories |
CN103970508A (zh) * | 2014-06-04 | 2014-08-06 | 上海航天电子通讯设备研究所 | 一种精简的微处理器ip核 |
CN104898990A (zh) | 2015-06-05 | 2015-09-09 | 北京大学 | 运算存储阵列及其操作方法 |
US10706922B2 (en) * | 2016-01-26 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Memristive arrays with offset elements |
CN106844223B (zh) * | 2016-12-20 | 2021-04-09 | 北京大学 | 数据搜索系统及方法 |
CN108228642B (zh) | 2016-12-21 | 2022-03-11 | 华为技术有限公司 | 一种基于忆阻器的项目推荐以及装置 |
US10171084B2 (en) * | 2017-04-24 | 2019-01-01 | The Regents Of The University Of Michigan | Sparse coding with Memristor networks |
US10318242B2 (en) * | 2017-09-08 | 2019-06-11 | Board Of Regents, The University Of Texas System | Memristor-based multipliers using memristors-as-drivers (MAD) gates |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
-
2018
- 2018-10-29 CN CN201811268340.7A patent/CN109582364B/zh active Active
- 2018-11-29 US US17/054,529 patent/US11830547B2/en active Active
- 2018-11-29 WO PCT/CN2018/118085 patent/WO2020087619A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571949A (zh) * | 2014-12-22 | 2015-04-29 | 华中科技大学 | 基于忆阻器实现计算与存储融合的处理器及其操作方法 |
CN106128503A (zh) * | 2016-06-20 | 2016-11-16 | 北京大学 | 基于忆阻器的运算存储阵列设备及其操作方法 |
CN108346446A (zh) * | 2017-01-23 | 2018-07-31 | 西部数据技术公司 | 具有双向阈值型选择器的高密度3d垂直reram |
Non-Patent Citations (2)
Title |
---|
基于忆阻器的多值存储电路设计;王子赢;《中国优秀硕士学位论文全文数据库 信息科技辑》;20171130(第11期);I137-43 * |
基于忆阻器的存储与计算融合理论与实现;李 祎,缪向水;《国防科技》;20161220;第 37 卷(第 6 期);17-22 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020087619A1 (zh) | 2020-05-07 |
US20210117189A1 (en) | 2021-04-22 |
CN109582364A (zh) | 2019-04-05 |
US11830547B2 (en) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5325501A (en) | Associative memory | |
US20190095383A1 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
JP3098071B2 (ja) | 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム | |
CN110689126A (zh) | 一种用于执行神经网络运算的装置 | |
US5710902A (en) | Instruction dependency chain indentifier | |
CN101957743B (zh) | 并行数字信号处理器 | |
CN109582364B (zh) | 基于忆阻器的精简指令集处理器 | |
US4558411A (en) | Polymorphic programmable units employing plural levels of sub-instruction sets | |
EP1186995A1 (en) | Instruction cache associative cross-bar switch | |
US10678541B2 (en) | Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions | |
US9122475B2 (en) | Instruction for shifting bits left with pulling ones into less significant bits | |
CN103257849A (zh) | 程序执行控制装置 | |
EP3798823A1 (en) | Apparatuses, methods, and systems for instructions of a matrix operations accelerator | |
US20110302394A1 (en) | System and method for processing regular expressions using simd and parallel streams | |
CN115686633A (zh) | 用于实现链式区块操作的系统和方法 | |
CN110321160A (zh) | 用于推测性有条件移动操作的装置和方法 | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
US6862676B1 (en) | Superscalar processor having content addressable memory structures for determining dependencies | |
US5958043A (en) | Superscalar processor with forward map buffer in multiple instruction parallel issue/execution management system | |
CN1329819C (zh) | 互换地址寄存器所存内容的方法和设备 | |
CN104951283B (zh) | 一种risc处理器的浮点处理单元集成电路及方法 | |
KR20010007093A (ko) | 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치 | |
Hasan et al. | An improved pipelined processor architecture eliminating branch and jump penalty | |
US20230153114A1 (en) | Data processing system having distrubuted registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |