CN102141905B - 一种处理器体系结构 - Google Patents
一种处理器体系结构 Download PDFInfo
- Publication number
- CN102141905B CN102141905B CN201010104030.9A CN201010104030A CN102141905B CN 102141905 B CN102141905 B CN 102141905B CN 201010104030 A CN201010104030 A CN 201010104030A CN 102141905 B CN102141905 B CN 102141905B
- Authority
- CN
- China
- Prior art keywords
- memory
- operand
- address
- data
- storer
- 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
- 230000005055 memory storage Effects 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 11
- 238000010168 coupling process Methods 0.000 claims description 11
- 238000005859 coupling reaction Methods 0.000 claims description 11
- 230000004927 fusion Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 210000000352 storage cell Anatomy 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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
-
- 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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
一种可以从存储器直接向运算单元提供操作数,并将运算单元执行结果写回存储器的处理器体系结构,没有对操作数的装载(load)、存储(store)指令,能提高程序运行效率及程序代码的密度。
Description
技术领域
本发明涉及处理器体系结构领域。
背景技术
现有的处理器体系结构在执行操作时通常先用专门的数据装载指令将操作数从存储器中装载(load)到寄存器中,再送到运算单元执行相应操作;执行完毕后,先将执行结果保存在寄存器中,再用专门的数据存储指令将寄存器中的数据存储(store)到存储器中。即便是支持操作数存储器寻址的处理器,由于存储器端口数目和带宽的限制,无法同时从存储器直接取得运算单元所需的全部操作数,而是先将一部分操作数从存储器装载到寄存器中,再由存储器和寄存器同时提供运算单元所需的操作数。
缓存(cache)的作用是将存储器中的一部分内容(即操作数)复制在缓存中,使这些内容能在短时间内由处理器快速存取,以保证流水线的持续运行。然而,由于缓存是存储器的一部分镜像,即便存在于缓存中的操作数,也必须先被全部或部分地装载到寄存器中后,才能被运算单元使用,并没有一种由缓存直接向运算单元提供全部操作数并将执行结果直接写回缓存的处理器体系结构。
根据统计,在传统处理器的程序中,装载指令和存储指令占程序中指令总数30%左右。由于装载指令和存储指令本身并不涉及算术逻辑运算,因此这类指令的比重越大,处理器运算单元的利用率越低,处理器的运算能力越无法得到充分的发挥。
专门的装载/存储单元(load store unit)的提出在一定程度上实现了装载/存储指令与算术逻辑运算指令的并行执行,提高了处理器运算单元的利用率。然而装载/存储指令涉及的操作数与之后使用这些操作数的运算指令之间的数据相关性使得装载/存储单元带来的性能提升并不理想。此外,额外的装载/存储单元增加了处理器的复杂性。
本发明公开了全新的处理器体系结构,从根本上解决处理器的效率问题。
发明内容
本发明提出了一种基于直接支持运算单元(Execution Unit)的零级存储器新的处理器体系结构。所述处理器体系结构与现有的传统处理器体系结构相比,有以下不同:
(1)没有对操作数的装载指令;
(2)没有对执行结果的存储指令;
(3)用零级存储器代替传统处理器体系结构中的通用寄存器堆(RegisterFile);所述零级存储器的端口数大于或等于三个。
在传统处理器体系结构的存储层次中,比一级缓存更低存储层次的是通用寄存器堆。本发明所述的零级存储器在对运算单元的运算支持效果上相当于通用寄存器堆,但本质上是存储器,内容是更低层次存储器中一部分内容的镜像,由存储机制自动填充和替换,不需要专门的指令进行装载和存储。
本发明所述的寄存器需要专门的装载/存储指令按寄存器号寻址进行装载或存储数据,如寄存器堆和处理器状态寄存器(processor status registers);而本发明所述存储器是整个系统存储器中一部分内容的镜像,由存储地址寻址,所述存储器中数据的填充和替换按某种机制自动进行,不需要专门的指令明示(explicit),如各级缓存和内存。
本发明所述的处理器体系结构中的运算单元能直接从存储器取得操作数、并将执行结果写回存储器。此外,所述处理器体系结构包含下列部分特征或全部特征:
(1)没有寄存器堆;
(2)没有将操作数从存储器装载(load)到寄存器堆的指令;
(3)没有将执行结果从寄存器堆存储(store)到存储器中的指令;
(4)对存储器的寻址方式包括立即数直接寻址、基地址加偏移量方式寻址。
本发明所述的处理器体系结构支持复数个流水线段同时对逻辑意义上的同一个存储器进行取操作数或写回执行结果的访问,可以是同时进行单数个或复数个数据的读取和写回。
本发明所述处理器体系结构中的指令格式可以只支持单数据寻址,也可以支持双数据寻址,还可以支持三数据寻址或更多数据寻址。所述数据寻址包括对运算单元所需的操作数的寻址和对运算单元执行结果的寻址。
本发明所述处理器体系结构中的寻址方式可以是通过指令码中的立即数直接寻址。
本发明所述处理器体系结构中的寻址方式也可以通过基地址加指令码中的立即数得到的地址寻址。
基于本发明所述的处理器体系结构构成的处理器包含零级存储器;所述零级存储器具有同时支持读取至少两个数据并写回至少一个数据的功能,可以由一个单独的多端口存储器构成,也可以由复数个单端口或多端口存储器构成。
本发明所述的零级存储器中储存的是处理器对应的主存储器中内容的子集,即所述零级存储器是部分主存储器的镜像,具有同时进行多个数据读写的功能,具体来说,至少能支持同时读取两个数据并写入一个数据。
所述零级存储器的工作频率应适应运算单元工作频率,指所述零级存储器能以运算单元能达到的最高时钟频率不间断地提供操作数并接收执行结果。
举例而言,若对应所述体系结构的指令中最多一次用到三个数据寻址,当零级存储器支持在同一时钟周期内完成读取两个数据并写入一个数据,那么所述零级存储器的时延应当小于或等于运算单元的时延。若达不到所述的时延,则零级存储器即为制约处理器性能的瓶颈。
当本发明所述零级存储器由复数个单端口或多端口存储器构成时,所述多端口存储器至少由一个具有单数个端口或复数个端口的第一存储器和一个具有复数个端口的第二存储器构成。
当本发明所述零级存储器由复数个单端口或多端口存储器构成时,所述多端口存储器还可以包括一个具有单数个端口或复数个端口的第三存储器,用于暂存第一存储器的输出数据,以供运算单元获取操作数。
本发明所述第一存储器的端口越少,则第二存储器的端口就越多以补偿。
根据本发明技术方案,以三端口零级存储器为例,可以有以下几种构成情况的实施例。此外还可以有更多的构成情况,均在本发明技术方案的范围内。
(1)由一个具有三个端口的存储器构成,所述具有三个端口的存储器可以同时支持两个读数据操作和一个写数据操作,以实现向运算单元提供操作数并写回执行结果的功能;
(2)由一个具有两个端口的第一存储器和一个具有三个端口的第二存储器构成,所述第一存储器用于向运算单元提供操作数,并接收从第二存储器来的写回数据,所述第二存储器用于向运算单元提供操作数并接收执行结果,以及将数据写回第一存储器;
(3)由一个具有三个端口的第一存储器和一个具有两个端口的第二存储器构成,所述第一存储器用于向运算单元及所述第二存储器提供操作数并接收执行结果,所述第二存储器用于接收从所述第一存储器来的操作数并向运算单元提供操作数。
本发明所述的第一存储器或第二存储器可以由复数个大小相同或不同的存储器构成;当所述第一存储器由复数个不同大小的存储器构成时,较小的存储器可以存有较大的存储器中的一部分数据。
当本发明所述的第一存储器或第二存储器是由复数个存储器构成时,若要写入数据,则通过复数个所述存储器的端口向相同地址写入同样的数据,若要读出数据,则可以根据地址的不同,通过复数个所述存储器的端口读出不同的复数个数据,或只通过复数个所述存储器中的一个的端口读出数据。
本发明所述的第二存储器具有以下特征:
(1)用于存储操作数及所述操作数对应的地址信息;所述地址信息可以是地址值,也可以是基地址值及偏移量;还可以是基指针寄存器号及偏移量;
(2)所述用于存储操作数的操作数存储单元与用于存储操作数地址的地址信息存储单元一一对应;
(3)具有读、写指针,可以按特定算法写入或读出操作数;
(4)可以将单数个或复数个输入地址信息与存储的地址信息进行匹配,并输出匹配成功的单数个或复数个对应操作数;所述输入地址信息可以是地址值,也可以是基地址值及偏移量,还可以是基指针寄存器号及偏移量。
本发明所述的第二存储器还可以具有写融合(write merge)功能,即被写入的数据对应的地址信息在所述第二存储器中已存在,则可以将所述写入的数据替换部分或全部已存在的数据。
举例而言,所述第二存储器可以由操作数存储单元和地址信息存储单元构成。按循环顺序写入操作数时,将操作数写入写指针指向的操作数存储单元,并将所述操作数对应的地址信息写入所述操作数存储单元对应的地址信息存储单元,再将写指针前移,即增加写指针对应的地址。按循环顺序读出操作数时,则将读指针指向的操作数存储单元及其对应的地址信息读出,再将读指针前移。当所述写指针或读指针已指向所述第二存储器的最后一项操作数存储单元时,若前移指针,则所述写指针或读指针将指向所述第二存储器的第一项操作数存储单元。此时,所述第二存储器类似一个循环先入先出队列(FIFO),具备循环先入先出队列写入、读出,及数据有效性、队列满、队列空等特性。所述写入用于接收运算单元的执行结果。所述读出,用于将数据写回所述第一存储器。
当从所述第二存储器向运算单元提供操作数时,所述第二存储器中的全部有效地址信息存储单元并行与输入的地址信息进行匹配,并输出匹配成功的地址信息对应的操作数存储单元中的操作数。此时,所述第二存储器的结构形式类似一个内容寻址存储器,特征是存储的每一组地址均可以与复数组输入地址并行匹配,输出所述复数组输入地址匹配成功时对应的数据。所述匹配成功而输出的操作数即运算单元所需的操作数。
基于本发明所述的处理器体系结构构成的处理器还可以包含基指针(BP,Base Pointer)寄存器,用于存储对零级存储器进行的以基地址加偏移量方式寻址时的基地址。
本发明所述的处理器体系结构中每个有效的基指针寄存器存储与所述零级存储器中的一部分数据存储单元对应的基地址;若所述第二存储器存储的地址信息是基指针寄存器号及偏移量、且所述有效的基指针寄存器的内容被改写后,第二存储器中对应于基指针寄存器原基地址的数据存储单元中的数据应被无效化;若所述数据存储单元中的数据应该但还没有写回第一存储器时,则需要先将被更改过的数据写回第一存储器后再被无效化。
举例而言,根据本发明所述处理器体系结构,可以由指令码中对应操作数或执行结果的基指针寄存器号找到对应的地址寄存器,从而得到该操作数或执行结果的基地址。再将该基地址与指令码中对应操作数或执行结果的偏移地址相加,从而得到对应操作数或执行结果的实际地址,进而完成寻址。
本发明所述处理器体系结构可以具有专门的基地址装载指令,通过所述地址装载指令可以将需要用到的基地址装载到所述基指针寄存器中;也可以以当前基地址为指针,根据程序运行的实际情况,加上一定的偏移量,从而得到新的基地址,并自动将所述新的基地址装载到所述基指针寄存器中。
根据本发明所述技术方案,使用复数个基指针寄存器,可以使运算单元能获取到数据的地址空间不连续的,用较少的指令位数实现对位置上分散的数据的访问,能有效地缩短所述指令的字长,增大代码密度。
本发明所述处理器体系结构的指令中不同的操作数或执行结果可以共用同一组基指针寄存器,也可以具有各自独立或部分独立的基指针寄存器。即所述基指针寄存器可以仅由一组地址寄存器构成,用于操作数一、操作数二和执行结果的寻址;也可以由三组地址寄存器构成,所述三组地址寄存器分别用于操作数一、操作数二和执行结果的寻址。此外由不同操作数共用一组基指针寄存器、执行结果用另一组基指针寄存器,或者一个操作数与执行结果共用一组基指针寄存器,另一个操作数用另一组基指针寄存器的情况也类似。
所述基指针寄存器可以全部用来存储基地址,也可以有单数个或复数个基指针寄存器用于表示向所述基指针寄存器对应的存储空间不可写入。
举例而言,当对指令译码得到的对应于执行结果的基指针寄存器号对应的地址寄存器是用于表示不可写入的,那么所述执行结果不会被真正写入所述零级存储器中,即所述执行结果被舍弃。
本发明所述的第二存储器中的一部分可以作为执行结果的暂存空间,对所述暂存空间的内容不做写回第一存储器的操作。所述第二存储器中的暂存空间中的内容只供运算单元执行后续指令时作为操作数使用。
在所述处理器体系结构中,还可以指定单数个或复数个基指针寄存器号,使所述基指针寄存器对应第二存储器中的存储空间为暂存空间,对所述暂存空间的内容不做写回第一存储器的操作。所述第二存储器中的暂存空间中的内容为中间结果只供运算单元执行后续指令时作为操作数使用。
所述处理器体系结构也可以具有用于暂存执行结果的计算/转移/状态寄存器。所述计算/转移/状态寄存器中的内容只供执行后续指令时判断转移条件、读写处理器状态或进行后续指令运算时作为操作数使用。
在传统的处理器体系结构中,用于暂存执行结果的寄存器中的值是可以被写回到存储器中的,用于暂存执行结果的存储器中的内容也可以被写回到更低存储层次的存储器中。根据本发明技术方案,所述暂存空间或计算寄存器的内容可以不被写回到第一存储器,因此也就不会被写回到更低存储层次,可以降低具体设计的复杂度,并提高处理器整体效率。
本所述的处理器体系结构中还可以有基指针模式寄存器。所述基指针模式寄存器也可以作为线程寄存器用于表示当前运行的线程的号码。根据本发明技术方案,可以将基指针寄存器分为复数组供不同的处理器线程使用,所述基指针模式寄存器中的不同值对应基指针寄存器的不同组别,所述基指针模式寄存器中每个模式代表一个线程。此时所述基指针模式寄存器中内容就是线程号码(PID)。在不同线程对应的指令与数据都能被明确区分的情况下(如发明“一种低缺失率、低缺失惩罚的缓存方法和装置”,中国专利申请号200910247204.4),采用本发明技术方案可以实现线程的快速切换。
本所述的复数组基指针寄存器的数量与所述基指针模式寄存器中能表示的模式的个数、即模式寄存器位宽有关。举例而言,两者关系可以是:所述复数组的数量等于以2为底、以所述基指针模式寄存器位宽为幂的数。
本所述的处理器体系结构中还可以有个数等于所述处理器体系结构能支持的最大线程数的复数组处理器状态寄存器组,用于在线程切换时保存处理器状态,并提供与新线程配套的处理器状态。所述基指针模式寄存器中的不同值对应不同的处理器状态寄存器组。
在传统处理器体系结构中,一旦需要切换线程,必须将原线程的状态保存到存储器中或专用的状态寄存器中,再切换成新的线程,并将事先储存的状态恢复后才能执行新线程中的指令。本发明所述体系结构可以在切换线程的同时保存并更新状态,以满足快速线程切换的要求。
当所述处理器中有所述基指针模式寄存器时,可以具有用于装载所述基指针模式寄存器的指令。所述用于装载所述基指针模式寄存器的指令可以是专门的基指针模式装载指令,也可以是与所述基地址装载指令相同操作码、但目标寄存器号不同的指令。
根据本发明所述技术方案,使用基指针模式寄存器可以增加对应操作数或执行结果的当前可用的基地址的数量,减少基地址的装载次数及对应在所述零级存储器中数据写回所述存储层次中较低层次的次数,能提高效率。
本发明所述处理器体系结构中的全部指令可以都不包含存储数据的通用寄存器号,可以包含基指针寄存器号和偏移地址,也可以只包含偏移地址。
所述指令格式中可以不明示基指针寄存器号,此时基地址是默认的。例如指令中的基指针寄存器号和偏移地址的位置可以一同被用于构成更长长度的偏移地址。但此时相应的基地址寄存器依然存在并可以被基地址装载/存储指令装载或读出,此时在所述基地址寄存器中的基地址就是在读取操作数或写回执行结果时默认的基地址,不需要在运算指令中明示。
本发明所述体系结构的处理器可应用于上海芯豪微电子有限公司的发明“基于单一指令集微处理器运算单元的可配置多核/众核系统”(中国专利申请号200810203778.7)、“针对多核/众核处理器程序分割的后编译系统”(中国专利申请号200810203777.2)、“一种数据处理的方法与装置”(中国专利申请号200910046117.2)、“一种数据处理的方法与装置”(中国专利申请号200910208432.0),构成前一个处理器的执行结果直接作为输入送给后一个处理器的串行连接多核结构,所述串行连接多核结构中的每个处理器分别执行完整程序的一部分,所有处理器接力实现完整程序的功能。所述处理器核均没有寄存器堆,也没有将操作数从存储器装载到寄存器堆或将执行结果从寄存器堆存储到存储器的指令。
当由基于传统体系结构的处理器构成串行连接多核结构时,数据可以由装载和存储指令通过两个处理器核之间的共享存储器进行传递,但前一个处理器核中通用寄存器堆的值必须通过额外的存储、装载指令,或通过专门的数据通道传递到后一个处理器核的通用寄存器堆中,使所述后一个处理器核能在与前一个处理器核相同状态的前提下进行后续的程序执行。
当采用基于本发明所述处理器体系结构的处理器构成串行连接多核结构时,由于处理器内部没有传统体系结构中的通用寄存器,每个处理器的所有执行结果都被直接传递所述处理器与后一个处理器之间共享的零级存储器中,因此能更高效率地实现所述串行连接多核结构。
本发明所述处理器体系结构的流水线段可以依次为:
(1)指令读取段,从指令存储器读取指令;
(2)指令译码段,指令译码,得到操作数地址信息;
(3)数据读取段,根据指令里包含的操作数地址信息从零级存储器中读出单数个或复数个操作数;
(4)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的单数个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;
(5)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。
对于上述任意一种流水线,若零级存储器不能在提供操作数的同时被写入,则可以在数据写回段将执行结果写入第二存储器,当第一存储器用来接收第二存储器送来的数据的输入端口有空闲时,第二存储器将存储的数据依次写回第一存储器。
根据本发明技术方案,可以直接用基指针寄存器号与偏移地址对第一存储器进行索引寻址,因此可以将上述的指令译码段和数据读取段合并为译码取数段,使流水线更为紧凑。
本发明所述处理器体系结构的流水线段还可以依次为:
(1)指令读取段,从指令存储器读取指令;
(2)译码取数段,指令译码,并根据指令里包含的操作数地址信息从零级存储器中读出单数个或复数个操作数;
(3)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的单数个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;
(4)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。
上述两种流水线的共性都在于没有使用寄存器堆,都支持复数个流水线段同时对同一个存储器进行取操作数或写回执行结果的访问,可以是同时进行单数个或复数个数据的读取和写回。在上述两种流水线结构的基础上增加流水线段依然属于本发明技术方案的一部分。
有益效果:
本发明所述处理器体系结构及基于所述体系结构实现的处理器与现有的体系结构及对应的传统处理器相比,没有对操作数的装载、存储指令。根据统计,在传统处理器的程序中,装载和存储指令占程序中指令总数30%左右,由于本发明所述处理器没有这类指令,因此能提高程序运行效率及程序代码的密度。
附图说明
虽然该发明可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的实施图例并进行详细阐述。应当理解的是,发明者的出发点不是将该发明限于所阐述的特定实施例,正相反,发明者的出发点在于保护所有基于由本权利声明定义的精神或范围内进行的改进、等效转换和修改。
图1是本发明所述体系结构的基本实施例。
图2是本发明所述体系结构的改进实施例。
图3是本发明所述处理器体系结构中第二存储器的一种具体实现的实施例。
图4是本发明所述处理器体系结构中处理器运算单元与零级存储器连接方式的8种实施例。
图5是本发明所述处理器体系结构对应流水线划分的两种实施例。
图6是本发明所述处理器体系结构指令集中指令格式的实施例。
图7是基于本发明所述处理器体系结构的处理器构成的串行连接多核结构的实施例。
具体实施方式
图1是本发明所述体系结构的基本实施例。图1(a)中的零级存储器(100)向处理器核(CPU core)(101)提供两个操作数(111、112),并接受处理器核的执行结果(114),零级存储器(100)由处理器核产生的地址(113)寻址。
图2是本发明所述体系结构的改进实施例。图2(a)和图2(b)中的零级存储器(100)向处理器核(101)提供两个操作数(111、112),并接受处理器核的执行结果(114),零级存储器(100)由处理器核产生的地址(113)寻址。图2(a)显示了零级存储器重填(refill)的途径,其中从更低级存储器来的重填总线(116)将重填数据从低级存储器传输到零级存储器(100),选择器(115)选择将重填总线(116)或处理器核给出总线(114)上的数据送给零级存储器。图2(b)与图2(a)类似,差别在零级存储器(1001)有两个写入,重填总线(116)与结果总线(114)各自接到自己的写口。后续图例为便于说明起见,不再列出重填路径。大规模三端口存储器的成本较高,图2(c)中零级存储器由一个只有一个读口和一个写口,或者只有一个读/写口的第一存储器(1002)与一个后置的第二存储器(102)构成,协作完成如图1、图2(a)和图2(b)中三端口存储器的同样功能。此例中处理器核(101)提供地址(113)供第一存储器(1002)及第二存储器(102)寻址。处理器核(101)的执行结果通过总线(117)存入第二存储器(102)。第一存储器(1002)通过总线(111)提供一个操作数给处理器核(101),第二存储器(102)通过总线(112)提供另一个操作数(即以前运算的结果)给处理器核(101)。当第一存储器(1002)的写口有空闲时,暂存在第二存储器(102)中的结果也可通过总线(112)写回至第一存储器(1002)。
请参阅图3,本实施例为本发明所述处理器体系结构中第二存储器的一种具体实现的实施例。
在本实施例中,地址通过写地址总线(1401)写入指定项。两个取地址总线(1410、1402)可同时输入两个地址与地址存储器所有项进行比较,产生的比较结果(1403)控制数据存储器的相应项将对应数据取出到取数据总线(1404)和取数据总线(1411)上。数据通过写数据总线(1405)写入指定项。指向当前写入项的写指示器(1406)为FIFO结构,以实现多项的连续写入。数据通过读数据总线(1407)读出,对应的地址通过读地址总线(1409)读出。指向当前读出项的读指示器(1408)亦为FIFO结构,以实现多项的连续读出。读写机制保证所有项的读出值一定为写入的最新值。
根据本发明技术方案,对第二存储器进行写融合匹配需要对每个地址额外增加一个比较器,所述比较器在本实施例中被省略。
图4是本发明所述处理器体系结构中处理器运算单元与零级存储器连接方式的8种实施例。
在图4(a)中,与处理器运算单元(302)连接的零级存储器由第一存储器(301)和第二存储器(303)组成。运算单元(302)需要两个操作数,并产生一个执行结果。在本实施例中,第一存储器(301)支持同时提供或接收两个数据。第一存储器(301)可以是四端口的存储器,即具有两组输出数据总线和两组输入数据总线,且支持同时输出两组数据、或同时输入两组数据、或同时输入一组数据并输出一组数据;第一存储器(301)也可以是两端口的存储器,即具有两组输入/输出数据总线,支持同时输出两组数据、或同时输入两组数据、或同时输入一组数据并输出一组数据。第二存储器(303)支持同时提供三个输出数据(316、317、318)并接收一个输入数据(315),是四端口的存储器。第一存储器(301)和第二存储器(303)所需数据寻址地址均由运算单元(302)产生。为便于描述,下面将以第一存储器(301)是四端口的存储器为例进行说明,当第一存储器(301)是两端口的存储器时,情况类似。
运算单元(302)所需的一个操作数(313)的来源可以是第一存储器(301)的输出数据(308)或第二存储器(303)的输出数据(316),经多路选择器(306)选择得到;另一个操作数(314)的来源可以是第一存储器(301)的输出数据(310)或第二存储器(303)的输出数据(317),经多路选择器(307)选择得到。运算单元(302)的执行结果(315)作为输入数据送到第二存储器(303)。
第一存储器(301)的一个输入数据(309)的来源可以是从外部存储器读取来的数据(312)或从第二存储器(303)来的输出数据(318),经多路选择器(304)选择得到;另一个输入数据(311)的来源可以是从外部存储器读取来的数据(312)或从第二存储器(303)来的输出数据(318),经多路选择器(305)选择得到。第一存储器(301)的两个输出数据(308、310)分别送往与运算单元(302)连接的两个多路选择器(306、307)。
第二存储器(303)的输入数据(315)来自运算单元的输出。第二存储器(303)的一个输出数据(318)送往与第一存储器(301)连接的多路选择器(304)和多路选择器(305);另外两个输出数据(316、317)分别送往与运算单元(302)连接的两个多路选择器(306、307)。对所述第二存储器的寻址是通过地址信息的匹配来实现的,并不是通过地址进行索引(index)寻址。
在本实施例中,运算单元最初只能从第一存储器(301)获得操作数,并将执行结果写入第二存储器(303)。由于之前运算的结果通常会被用做后续运算的操作数,因此,之后的部分运算会从第二存储器(303)获得部分或全部操作数,并将执行结果写入第二存储器(303)。当运算单元从第二存储器(303)取操作数时,第一存储器(301)可以进行从外部存储器获取新数据的操作,或将第二存储器(303)送来的数据写入第一存储器(301)。如此即可根据本发明技术方案,实现存储器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。
图4(b)与图4(a)在结构上基本类似,差别在于第二存储器(3031)支持同时提供两个输出数据(317、3181)并接收一个输入数据(315),是三端口的存储器,且外部存储器的输入数据(3121)不与第二存储器(3031)的输出数据(3181)选择,直接送到第一存储器(301)的输入端口。此外第二存储器(3031)的输出数据(3181)直接送到第一存储器(301)的另一个输入端口及与运算单元(302)连接的多路选择器(306)。
在本实施例中,运算单元最初只能从第一存储器(301)获得操作数,并将执行结果写入第二存储器(3031)。之后的部分运算会从第二存储器(303)获得部分或全部操作数,并将执行结果写入第二存储器(303)。当运算单元(302)选择第二存储器(3031)的输出数据(3181)为操作数(313)时,输出数据(3181)同时被写回第一存储器(301);当运算单元(302)选择第二存储器(3031)的输出数据(317)为操作数(314)时,外部存储器的输入数据(3121)可以被同时写入第一存储器(301)。如此即可根据本发明技术方案,实现存储器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。
图4(c)与图4(a)在结构上基本类似,差别在于第一存储器(3011)支持同时提供两个数据,或同时提供一个数据并接收一个数据,且外部存储器的输入数据(3122)和第二存储器(303)的输出数据(3182)均只送到与第一存储器(3011)连接的多路选择器(305),经选择后作为第一存储器(301)的输入数据(311)。
在本实施例中,从外部存储器或第二存储器(303)写回第一存储器(3011)的途径少了,但第一存储器(3011)的结构更为简单,且能够实现存储器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。
图4(d)与图4(b)在结构上基本类似,差别在于第一存储器(3012)在一个时刻只支持提供一个数据,或接收一个数据,且接收的输入数据来源是从外部存储器来的输入数据(3122),或第二存储器(3031)的输出数据(3183),经多路选择器(305)选择得到。此外,第二存储器(3031)的输出数据(3171)被分别送往与运算单元(302)连接的两个多路选择器(306、307)作为可能的操作数。
由于处理器支持的指令中有些是单操作数指令,还有一些指令中只有一个操作数来源于存储器,另一个来源于指令解码得到的立即数,因此并不是每条指令都需要从存储器获取两个操作数。在本实施例中,运算单元(302)最初可以执行上述只需要从存储器获取一个操作数的指令,即从第一存储器(3012)获取一个操作数,并将执行结果写入第二存储器(3031);或通过运算单元(302)将操作数从第一存储器(3012)移动(move)到第二存储器(3031),之后的部分运算会从第二存储器(3031)获得部分或全部操作数,并将执行结果写入第二存储器(3031)。第一存储器(3012)不支持同时读写数据,因此当运算单元(302)不需要从第一存储器(3012)获取操作数时,第一存储器(3012)可以写入从外部存储器来的输入数据(3122)或从第二存储器(3031)来的输出数据(3183)。如此即能实现存储器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。
图4(e)与图4(d)在结构上基本类似,差别在于第二存储器(3032)只支持同时提供一个输出数据(3184)并接收一个输入数据(315),是两端口的存储器。此外,第二存储器(3032)的输出数据(3184)被送往运算单元(302)作为一个操作数,并被送往与运算单元(302)连接的多路选择器(307)作为可能的另一个操作数,以及被送往与第一存储器(3012)连接的多路选择器(305)作为可能的输入数据。
在本实施例中,第二存储器(3032)无法同时向运算单元(302)提供两个不同的操作数,因此一旦执行到需要从存储器获取两个不同的操作数的指令时,必须由第一存储器(3012)和第二存储器(3032)一同提供操作数。这样减少了数据从第二存储器(3032)写回第一存储器(3012)的机会,但简化了设计的复杂度,本实施例在单操作数指令出现频率较高的情况下是有优势的。
图4(f)与图4(e)在结构上基本类似,差别在于增加了一个较小的在功能上类似旁路缓冲(look aside buffer)的第三存储器(320)。第三存储器也具有地址匹配功能,根据本发明技术方案,在从第一存储器(3012)读取数据之前会先在第三存储器(320)中进行寻址匹配,只有当第三存储器(320)中没有所需数据,才会从第一存储器(3012)读取。第三存储器(320)的寻址地址同样由运算单元(302)产生,接收来自第一存储器(3012)的输出数据(310)作为自身的输入数据,并将输出数据(3081)送往与运算单元(302)连接的多路选择器(306)作为可能的操作数。当运算单元(302)需要从第一存储器(3012)获得两个操作数时,根据本发明技术方案,将其中一个操作数从第一存储器(3012)读出暂存到第三存储器(320),下一周期由第一存储器(3012)和第三存储器(320)一同提供所需的两个操作数。这种情况类似于处理器流水线等待一个周期。此外,第二存储器(3032)的输出数据(3185)被分别送往与运算单元(302)连接的多路选择器(306、307)作为可能的操作数,并被送往与第一存储器(3012)连接的多路选择器(305)作为可能的输入数据。
本实施例是对图4(e)实施例的一种改进。第三存储器(320)可以暂存第一存储器(3012)的输出数据(310)。之后,当指令需要从第一存储器(3012)获取同样操作数时,可以从第三存储器(320)输出该操作数,使第一存储器(3012)能有空闲写入来自第二存储器(3032)的输出数据(3185),从而适应更广泛的程序。
图4(g)与图4(d)在结构上基本类似,差别在于第一存储器(3012)的输出数据(3101)除了被送往与运算单元(302)连接的多路选择器(307)作为可能的操作数外,还与从运算单元输出的执行结果(3152)一同被送往与第二存储器(3031)连接的多路选择器(3153),经选择后得到第二存储器(3031)的输入数据(3151)。
本实施例是对图4(d)和图4(f)实施例的一种改进。在本实施例中,第一存储器(3012)中的数据能够不经过运算单元(302)直接旁路写入第二存储器(3031),避免了对运算单元(302)的占用,因此能更好地提高运算单元(302)的利用率。此外本实施例不需要用到第三存储器,本质上是将第三存储器合并到第二存储器(3031)中,简化了设计并节省了面积。
图4(h)与图4(a)在结构上基本类似,差别在于第一存储器由两个大小不同的存储器(321)和存储器(322)构成,这两个存储器都只支持同时提供一个数据或接收一个数据。存储器(321)的输出数据(3082)被送往与运算单元(302)连接的多路选择器(306)作为可能的操作数;存储器(322)的输出数据(310)被送往与运算单元(302)连接的另一个多路选择器(307)作为可能的另一个操作数。同时存储器(321)的输入数据来源除了从外部存储器来的输入数据(312)和第二存储器(303)的输出数据(318)外,还可以是存储器(322)的输出数据(3101),三者经多路选择器(3041)选择后得到实际写入存储器(321)的输入数据(3091)。
在本实施例中,存储器(321)和存储器(322)结构都比较简单,易于实现。存储器(322)储存了图4(a)实施例中第一存储器(301)中的全部数据,存储器(321)通过从存储器(322)写入存储器(321)的方式储存了存储器(322)中当前使用率较高的一部分数据,这样保证了运算单元(302)可以从不同的存储器中获取任意需要的操作数。在本实施例中,所述当前使用率较高的一部分数据是当前基指针寄存器指向的数据段。此时,若要将数据写入第一存储器,则必须对存储器(321)和存储器(322)各自对应地址写入同样的数据,若要读出数据,则可以根据需要从两个存储器中同时读出相同或不同的数据。
图5是本发明所述处理器体系结构对应流水线划分的两种实施例。
图5(a)中,流水线为5段流水线,分别是指令读取(I)(501)、指令译码(D)(502)、数据读取(R)(503)、执行(E)(504)和数据写回(W)(505)。在本实施例中,零级存储器由第一存储器和第二存储器构成,其中第一存储器采用与现有缓存类似的标志(tag)匹配结构。
在指令读取段(501),进行指令标志匹配(507),并同时读取指令,再根据指令标志的匹配结果得到正确的指令。
在指令译码段(502),在第二存储器中对需要读取的数据的地址信息进行读匹配(512),同时将所述地址信息中的基地址和偏移地址相加以获得完整的数据地址(513)。
在数据读取段(503),如果指令译码段(502)的地址信息匹配成功,则可以直接从第二存储器中读取到所需的数据(514);如果匹配不成功,则用指令译码段(502)产生的完整数据地址进行数据读标志匹配(515),并对第一存储器进行索引寻址以读取所需的数据(516),再根据数据标志的匹配结果得到正确的数据。在本流水线段中,从第二存储器中读取数据的操作(514)与数据读标志匹配(515)、从第一存储器中读取数据的操作(516)也可以同时进行,在增加一些功耗的情况下提高一些性能。
在执行段(504),除运算器执行指令定义的运算(517)外,第二存储器对执行结果将被写入的地址进行写融合匹配(519),同时将执行结果地址信息中的基地址和偏移地址相加以获得完整的数据地址(518)。
在写回段(505),执行结果被写入第二存储器(520)。此后,当第一存储器用来接收第二存储器送来的数据的输入端口有空闲时,第二存储器将存储的数据依次经数据标志匹配后写回第一存储器。
根据本发明技术方案,也可以对所述流水线进行部分改进。可以在指令读取段(501)之前进行指令标志匹配、在数据读取段(503)前进行数据读标志匹配,从而在指令读取段(501)和数据读取段(503)有更充分的时间用于访问第一存储器。此外,也可以在指令中不含有基指针寄存器号、第一存储器的容量足够容纳所有数据的情况下不进行数据标志的匹配。
图5(b)是将本发明技术方案应用于发明“一种低缺失率、低缺失惩罚的缓存方法和装置”(中国专利申请号200910247204.4)的流水线实施例。本实施例的流水线与图5(a)中的流水线类似,也分为指令读取段(501)、指令译码段(521)、数据读取段(503)、执行段(522)和数据写回段(505)。
在指令读取段(501),从指令存储器读取指令。
在指令译码段(521),在第二存储器中对需要读取的数据的地址信息进行读匹配,同时用包含基地址和偏移地址的地址信息直接在第一存储器中进行读数据的寻址(523)。
在数据读取段(503),如果指令译码段(521)的地址信息匹配成功,则可以直接从第二存储器中读取到所需的数据;如果匹配不成功,则从第一存储器读取所需的数据。
在执行段(522),除运算器执行指令定义的运算外,第二存储器对执行结果将被写入的地址进行写融合匹配,同时用包含基地址和偏移地址的地址信息直接在第一存储器中进行写数据的寻址(524)。
在写回段(505),执行结果被写入第二存储器。此后,当第一存储器用来接收第二存储器送来的数据的输入端口有空闲时,第二存储器将存储的数据依次根据基地址和偏移地址寻址写回第一存储器。
本实施例与图5(a)实施例的差别在于由于采用了不同于传统缓存结构的第一存储器,在指令译码段(521)和数据读取段(503)不需要计算得到完整的地址,而是可以直接在第一存储器中用包含基地址和偏移地址的地址信息进行寻址(523、524),使设计更为简单、高效。
图6是本发明所述处理器体系结构指令集中指令格式的实施例。为了便于说明,本实施例仅列举了两种指令格式,省略了其他几种可能格式。
图6(a)是三操作数指令的格式。操作数一和操作数二为运算单元执行的输入,操作数三为运算单元执行的结果。所述三操作数指令由指令码(601)、第一个基指针寄存器号(602)、第一个偏移地址(603)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三个基指针寄存器号(606)和第三个偏移地址(607)构成,其中基指针寄存器号(602)中对应的基地址加上偏移地址(603)可以得到操作数一的地址,基指针寄存器号(604)中对应的基地址加上偏移地址(605)可以得到操作数二的地址,基指针寄存器号(606)中对应的基地址加上偏移地址(607)可以得到执行结果的地址。对于两操作数指令,也可以具有类似的、但少一组基指针寄存器号和偏移地址的指令格式。
图6(b)是立即数指令或条件转移指令的格式。在本实施例中,立即数指令的指令格式与三操作数指令格式的差别在于前者只需要从存储器获取一个操作数并写入执行结果,另一个操作数来源于指令中的立即数,因此立即数指令由立即数(608)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三个基指针寄存器号(606)和第三个偏移地址(607)构成,操作数和执行结果地址的产生与图6(a)实施例相同。条件转移指令只需要从存储器获取两个操作数,而不必有写回操作,因此指令格式也由立即数(即转移偏移量)(608)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三个基指针寄存器号(606)和第三个偏移地址(607)构成,操作数和执行结果地址的产生与图6(a)实施例相同。对于无条件转移指令,可以有专门的指令格式,也可以将其视为条件转移指令的特例,即转移条件始终成立的条件转移指令,在具体的指令格式上,可以对第二和第三个基指针寄存器号给予同样的值,并对第二和第三个偏移地址给予同样的值。
对于基地址装载指令,可以用一组基指针寄存器号及偏移地址对存储器寻址得到的数据写入另一个基指针寄存器号对应的基指针寄存器中。根据本发明所述技术方案,还可以有同时装载两组基地址的基地址装载指令,即在指令格式中包含四个基指针寄存器号和两个偏移地址,同时用两组基指针寄存器号及偏移地址对存储器寻址得到两组数据写入另外两个基指针寄存器号对应的基指针寄存器中,所述另外两个基指针寄存器号在指令中的位置可以是图6(b)指令格式中的立即数(608)的位置。
此外,所述指令格式中可以不明示基指针寄存器号,此时基地址是默认的。例如图6(b)指令格式中第三个基指针寄存器号(606)和第三个偏移地址(607)的位置可以全部用于构成更长长度的偏移地址。但此时基地址寄存器依然是存在并可以被基地址装载/存储指令装载或读出,只是没有在指令中被明示。
需要注意的是,本发明所述处理器体系结构指令集中的指令格式并不仅限于本实施例中列举的指令格式,其他的指令格式也与此相似。
图7是基于本发明所述处理器体系结构的处理器构成的串行连接多核结构的实施例。处理器核(1101)由本地指令存储器(1103)、运算单元(1105)、数据地址产生模块(1107)、程序计数器(1108)、输出缓冲(1110)以及零级存储器组成。所述零级存储器由第一存储器(1102)和第二存储器(1109)组成。第一存储器(1104)是接在处理器核(1101)后一级的处理器核对应的零级存储器的一部分。
本地指令存储器(1103)存储有处理器核(1101)执行所需的指令。处理器核(1101)中运算单元(1105)所需的操作数可以来自第一存储器(1102)、第二存储器(1109)、第一存储器(1104),或来自指令中的立即数;执行结果写回第二存储器(1109)。
在本实施例中,处理器核对应的第一存储器(1102)中的数据、第二存储器(1109)中的数据(1115)、后一个处理器核对应的第一存储器(1104)中的数据和外部的共享存储器中的数据(1111)通过多路选择器(1116、1117)选择后,作为操作数输入到运算单元(1105)中。
第二存储器(1109)接收的数据有三个来源:从运算单元(1105)来的数据、从第一存储器(1102)来的数据、以及从外部的共享存储器来的数据(1111)。所述从运算单元(1105)来的数据、从第一存储器(1102)来的数据、以及从外部的共享存储器来的数据(1111)通过多路选择器(1112)选择后输入到第二存储器(1109)。
在本实施例中,第一存储器只接收从前一处理器核中的第二存储器来的数据输入。如第一存储器(1104)接收来自处理器核(1101)中第二存储器(1109)来的数据输入(1118)。
第一存储器(1102)接收的地址也有三个来源:从前级处理器核第二存储器中地址存储部分来的用于存储数据的地址、从前级处理器核数据地址产生模块来的用于读取数据的地址、从本级处理器核数据地址产生模块(1107)来的用于读取数据的地址。上述地址通过多路选择器选择后,输入到第一存储器(1102)中的地址接收模块。
相应地,第一存储器(1104)接收的地址有三个来源:从前级处理器核第二存储器(1109)中地址存储部分来的用于存储数据的地址、从前级处理器核数据地址产生模块(1107)来的用于读取数据的地址、从本级处理器核数据地址产生模块来的用于读取数据的地址(1113)。上述地址通过多路选择器(1114)选择后,输入到第一存储器(1104)中的地址接收模块。
根据本发明技术方案,在本实施例中,处理器核(1101)的前一级处理器核的执行结果会被写入第一存储器(1102);第一存储器(1102)能够直接向处理器核(1101)的运算单元(1105)提供操作数,或直接将数据旁路到第二存储器(1109);运算单元(1105)的执行结果可以被直接写入第二存储器(1109)。第二存储器(1109)能根据地址产生模块(1107)产生的地址输出数据(1115)作为操作数供运算单元(1105)使用。本实施例实现的是多个处理器核构成的串行连接多核结构,因此第二存储器(1109)并不需要将数据写回处理器核(1101)对应的第一存储器(1102),而是将数据写入后一个处理器核对应的第一存储器(1104),从而实现数据的传递。
Claims (21)
1.一个数字系统,包括:
一个执行单元,连接一个包含所述执行单元进行运算的所需数据的数据存储器;
一个零级(L0)存储器,位于执行单元及数据存储器之间并与它们连接,用于接收数据存储器中的部分数据;和
一个地址生成单元,用于生成对零级存储器寻址用的地址信息,
其中,所述零级存储器利用地址生成单元生成的地址,不将操作数装载到一个或多个寄存器中,而是从所述部分数据中向执行单元直接提供单条指令的至少两个所述操作数。
2.根据权利要求1所述系统,其特征在于:
利用地址生成单元生成的地址,不将指令单元执行单条指令的结果存储到寄存器中,而是直接存储到所述零级存储器中。
3.根据权利要求1所述系统,其特征在于:
所述零级存储器包括一个第一存储器和一个第二存储器;
所述第一存储器连接执行单元,用于提供所述至少两个操作数中的一个或多个;和
所述第二存储器连接执行单元,用于接收结果并提供所述至少两个操作数中的一个或多个。
4.根据权利要求3所述系统,其特征在于:
所述第一存储器由立即数直接寻址模式和基地址加偏移量模式中的至少一种寻址。
5.根据权利要求3所述系统,其特征在于:
所述第二存储器用于存储操作数地址信息及对应的操作数,且所述地址信息是可以内容寻址的。
6.根据权利要求5所述系统,其特征在于:
当结果对应的地址已经存储在第二存储器中时,该地址对应的已经存储的操作数在被写回第一存储器前更新为该结果。
7.根据权利要求5所述系统,其特征在于:
所述地址信息包括一个实际地址值、一个基地址值加一个偏移量值、一个基指针寄存器号和一个偏移量值之一。
8.根据权利要求3所述系统,其特征在于进一步包括:
一个连接执行单元和第一存储器的第三存储器,使得执行时首先从第三存储器中取得一个操作数,并在第三存储器中不包含该操作数时从第一存储器中获取该操作数。
9.根据权利要求3所述系统,其特征在于:
所述第一存储器包含一个第一大小的第一存储装置和一个第二大小的第二存储装置,所述第一大小大于所述第二大小,
其中,所述第二存储装置存储了第一存储装置中被频繁使用的数据。
10.一个多核处理器,包含复数个串行连接的权利要求3所述数字系统,其特征在于:
一个被写入一个数字系统中的第二存储器的运算结果被提供给后续数字系统中的第一存储器,使得该运算结果被用于多核运算。
11.根据权利要求3所述系统,其特征在于:
所述第二存储器包含一个临时存储空间,用于存储不需要写回第一存储器但会被作为执行单元操作数的临时运行结果。
12.根据权利要求3所述系统,其特征在于:
所述执行单元接收的指令可以包含一个标志位,所述标志位用于表示该指令执行结果是否需要被写回第一存储器。
13.根据权利要求3所述系统,其特征在于:
所述执行单元接收的指令可以包含一个操作码、一个第一基地址、一个第一偏移量、一个第二基地址、一个第二偏移量、一个结果基地址和一个结果偏移量。
14.一种实现处理器流水线操作的方法,所述处理器包含一个连接一个零级存储器的执行单元,所述零级存储器包含一个第一存储器和一个第二存储器;所述方法包括:
提供一个流水线取指段,用于从一个指令存储器中读取一条指令;
提供一个流水线译码段,用于对从指令存储器取来的指令进行译码并获取一个或多个操作数的地址信息;
提供一个流水线读数段,用于不将一个或多个操作数装载到一个或多个寄存器中,而是利用获取到的地址信息,直接从零级存储器获取所述一个或多个操作数;
提供一个流水线执行段,用于对所述一个或多个操作数执行指令并产生一个执行结果,和
提供一个流水线写回段,用于不将所述执行结果存储到寄存器中,而是直接将所述执行结果存储到第一存储器中。
15.根据权利要求14所述方法,其特征在于:
所述流水线译码段可以进一步用于将地址信息与第二存储器中的内容进行匹配。
16.根据权利要求14所述方法,其特征在于:
所述流水线译码段可以进一步通过对指令信息中包含的一个基地址和一个偏移地址相加得到指令地址。
17.根据权利要求14所述方法,其特征在于:
将所述流水线译码段和所述流水线读数段合并为一个流水线译码读数段,用于在一个流水线段内对从指令存储器取来的指令进行译码、得到一个或多个操作数的地址信息,并利用得到的地址信息,不将所述一个或多个操作数装载到一个或多个寄存器中,而是直接从零级存储器获取所述一个或多个操作数。
18.根据权利要求15所述方法,其特征在于:
当流水线译码段成功匹配地址信息时,所述流水线读数段可以进一步从第二存储器读取一个或多个操作数。
19.根据权利要求15所述方法,其特征在于:
当流水线译码段不能成功匹配地址信息时,所述流水线读数段可以进一步从第一存储器读取一个或多个操作数。
20.根据权利要求14所述方法,其特征在于:
所述流水线执行段可以在写回运算结果时在第二存储器中进行写融合匹配。
21.根据权利要求15所述方法,其特征在于:
所述执行结果被写入零级存储器中的第二存储器。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010104030.9A CN102141905B (zh) | 2010-01-29 | 2010-01-29 | 一种处理器体系结构 |
EP11736650.0A EP2529302A4 (en) | 2010-01-29 | 2011-01-28 | PROCESSOR CACHE SYSTEM AND METHOD THEREFOR |
US13/520,572 US9047193B2 (en) | 2010-01-29 | 2011-01-28 | Processor-cache system and method |
PCT/CN2011/070776 WO2011091768A1 (en) | 2010-01-29 | 2011-01-28 | Processor-cache system and method |
US14/701,526 US9262164B2 (en) | 2010-01-29 | 2015-05-01 | Processor-cache system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010104030.9A CN102141905B (zh) | 2010-01-29 | 2010-01-29 | 一种处理器体系结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102141905A CN102141905A (zh) | 2011-08-03 |
CN102141905B true CN102141905B (zh) | 2015-02-25 |
Family
ID=44318677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010104030.9A Active CN102141905B (zh) | 2010-01-29 | 2010-01-29 | 一种处理器体系结构 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9047193B2 (zh) |
EP (1) | EP2529302A4 (zh) |
CN (1) | CN102141905B (zh) |
WO (1) | WO2011091768A1 (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9437256B2 (en) | 2013-09-19 | 2016-09-06 | Micron Technology, Inc. | Data shifting |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9466340B2 (en) | 2013-07-26 | 2016-10-11 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US9472265B2 (en) | 2013-03-04 | 2016-10-18 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9530475B2 (en) | 2013-08-30 | 2016-12-27 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US9589607B2 (en) | 2013-08-08 | 2017-03-07 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US10593377B2 (en) | 2014-10-16 | 2020-03-17 | Micron Technology, Inc. | Multiple endianness compatibility |
US10685699B2 (en) | 2014-10-24 | 2020-06-16 | Micron Technology, Inc. | Sort operation in memory |
US11048428B2 (en) | 2016-11-11 | 2021-06-29 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US12142347B2 (en) | 2022-11-07 | 2024-11-12 | Lodestar Licensing Group Llc | Apparatuses and methods for performing logical operations using sensing circuitry |
Families Citing this family (139)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8805962B1 (en) * | 2011-02-28 | 2014-08-12 | Amazon Technologies, Inc. | Making publisher content available to specific users |
US9110778B2 (en) * | 2012-11-08 | 2015-08-18 | International Business Machines Corporation | Address generation in an active memory device |
US9934856B2 (en) | 2014-03-31 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for comparing data patterns in memory |
US9830999B2 (en) | 2014-06-05 | 2017-11-28 | Micron Technology, Inc. | Comparison operations in memory |
US9779019B2 (en) | 2014-06-05 | 2017-10-03 | Micron Technology, Inc. | Data storage layout |
US10074407B2 (en) | 2014-06-05 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for performing invert operations using sensing circuitry |
US9711206B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9786335B2 (en) | 2014-06-05 | 2017-10-10 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9704540B2 (en) | 2014-06-05 | 2017-07-11 | Micron Technology, Inc. | Apparatuses and methods for parity determination using sensing circuitry |
US9711207B2 (en) | 2014-06-05 | 2017-07-18 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9910787B2 (en) | 2014-06-05 | 2018-03-06 | Micron Technology, Inc. | Virtual address table |
US9361228B2 (en) * | 2014-08-05 | 2016-06-07 | Qualcomm Incorporated | Cache line compaction of compressed data segments |
US9898252B2 (en) | 2014-09-03 | 2018-02-20 | Micron Technology, Inc. | Multiplication operations in memory |
US9904515B2 (en) | 2014-09-03 | 2018-02-27 | Micron Technology, Inc. | Multiplication operations in memory |
US9740607B2 (en) | 2014-09-03 | 2017-08-22 | Micron Technology, Inc. | Swap operations in memory |
US9747961B2 (en) | 2014-09-03 | 2017-08-29 | Micron Technology, Inc. | Division operations in memory |
US9847110B2 (en) | 2014-09-03 | 2017-12-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector |
US10068652B2 (en) | 2014-09-03 | 2018-09-04 | Micron Technology, Inc. | Apparatuses and methods for determining population count |
US9940026B2 (en) | 2014-10-03 | 2018-04-10 | Micron Technology, Inc. | Multidimensional contiguous memory allocation |
US9836218B2 (en) | 2014-10-03 | 2017-12-05 | Micron Technology, Inc. | Computing reduction and prefix sum operations in memory |
US9779784B2 (en) | 2014-10-29 | 2017-10-03 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9747960B2 (en) | 2014-12-01 | 2017-08-29 | Micron Technology, Inc. | Apparatuses and methods for converting a mask to an index |
US10073635B2 (en) | 2014-12-01 | 2018-09-11 | Micron Technology, Inc. | Multiple endianness compatibility |
US10032493B2 (en) | 2015-01-07 | 2018-07-24 | Micron Technology, Inc. | Longest element length determination in memory |
US10061590B2 (en) | 2015-01-07 | 2018-08-28 | Micron Technology, Inc. | Generating and executing a control flow |
WO2016126472A1 (en) | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
EP3254286B1 (en) | 2015-02-06 | 2019-09-11 | Micron Technology, INC. | Apparatuses and methods for parallel writing to multiple memory device locations |
CN107408404B (zh) | 2015-02-06 | 2021-02-12 | 美光科技公司 | 用于存储器装置的设备及方法以作为程序指令的存储 |
US10522212B2 (en) | 2015-03-10 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for shift decisions |
US9741399B2 (en) | 2015-03-11 | 2017-08-22 | Micron Technology, Inc. | Data shift by elements of a vector in memory |
US9898253B2 (en) | 2015-03-11 | 2018-02-20 | Micron Technology, Inc. | Division operations on variable length elements in memory |
US10365851B2 (en) | 2015-03-12 | 2019-07-30 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10146537B2 (en) | 2015-03-13 | 2018-12-04 | Micron Technology, Inc. | Vector population count determination in memory |
US10049054B2 (en) | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10140104B2 (en) | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
US9959923B2 (en) | 2015-04-16 | 2018-05-01 | Micron Technology, Inc. | Apparatuses and methods to reverse data stored in memory |
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器系统和方法 |
US10073786B2 (en) | 2015-05-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for compute enabled cache |
US11561792B2 (en) * | 2015-06-08 | 2023-01-24 | Qualcomm Incorporated | System, apparatus, and method for a transient load instruction within a VLIW operation |
US9782589B2 (en) * | 2015-06-10 | 2017-10-10 | Bluewind Medical Ltd. | Implantable electrostimulator for improving blood flow |
US9704541B2 (en) | 2015-06-12 | 2017-07-11 | Micron Technology, Inc. | Simulating access lines |
US9921777B2 (en) | 2015-06-22 | 2018-03-20 | Micron Technology, Inc. | Apparatuses and methods for data transfer from sensing circuitry to a controller |
US9996479B2 (en) | 2015-08-17 | 2018-06-12 | Micron Technology, Inc. | Encryption of executables in computational memory |
US9905276B2 (en) | 2015-12-21 | 2018-02-27 | Micron Technology, Inc. | Control of sensing components in association with performing operations |
US9952925B2 (en) | 2016-01-06 | 2018-04-24 | Micron Technology, Inc. | Error code calculation on sensing circuitry |
US10048888B2 (en) | 2016-02-10 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for partitioned parallel data movement |
US9892767B2 (en) | 2016-02-12 | 2018-02-13 | Micron Technology, Inc. | Data gathering in memory |
US9971541B2 (en) | 2016-02-17 | 2018-05-15 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10956439B2 (en) | 2016-02-19 | 2021-03-23 | Micron Technology, Inc. | Data transfer with a bit vector operation device |
US9899070B2 (en) | 2016-02-19 | 2018-02-20 | Micron Technology, Inc. | Modified decode for corner turn |
US9697876B1 (en) | 2016-03-01 | 2017-07-04 | Micron Technology, Inc. | Vertical bit vector shift in memory |
US10262721B2 (en) | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US9997232B2 (en) | 2016-03-10 | 2018-06-12 | Micron Technology, Inc. | Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations |
US10379772B2 (en) | 2016-03-16 | 2019-08-13 | Micron Technology, Inc. | Apparatuses and methods for operations using compressed and decompressed data |
US9910637B2 (en) | 2016-03-17 | 2018-03-06 | Micron Technology, Inc. | Signed division in memory |
US11074988B2 (en) | 2016-03-22 | 2021-07-27 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10388393B2 (en) | 2016-03-22 | 2019-08-20 | Micron Technology, Inc. | Apparatus and methods for debugging on a host and memory device |
US10120740B2 (en) | 2016-03-22 | 2018-11-06 | Micron Technology, Inc. | Apparatus and methods for debugging on a memory device |
CN105868126B (zh) * | 2016-03-23 | 2018-09-18 | 中国电子科技集团公司第三十八研究所 | 一种提高指令高速缓冲存储器命中率的装置及方法 |
US10977033B2 (en) | 2016-03-25 | 2021-04-13 | Micron Technology, Inc. | Mask patterns generated in memory from seed vectors |
US10474581B2 (en) | 2016-03-25 | 2019-11-12 | Micron Technology, Inc. | Apparatuses and methods for cache operations |
US10074416B2 (en) | 2016-03-28 | 2018-09-11 | Micron Technology, Inc. | Apparatuses and methods for data movement |
US10430244B2 (en) | 2016-03-28 | 2019-10-01 | Micron Technology, Inc. | Apparatuses and methods to determine timing of operations |
US10453502B2 (en) | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10607665B2 (en) | 2016-04-07 | 2020-03-31 | Micron Technology, Inc. | Span mask generation |
US9818459B2 (en) | 2016-04-19 | 2017-11-14 | Micron Technology, Inc. | Invert operations using sensing circuitry |
US10153008B2 (en) | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US9659605B1 (en) | 2016-04-20 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
US10042608B2 (en) | 2016-05-11 | 2018-08-07 | Micron Technology, Inc. | Signed division in memory |
US9659610B1 (en) | 2016-05-18 | 2017-05-23 | Micron Technology, Inc. | Apparatuses and methods for shifting data |
US10049707B2 (en) | 2016-06-03 | 2018-08-14 | Micron Technology, Inc. | Shifting data |
US10387046B2 (en) | 2016-06-22 | 2019-08-20 | Micron Technology, Inc. | Bank to bank data transfer |
US10037785B2 (en) | 2016-07-08 | 2018-07-31 | Micron Technology, Inc. | Scan chain operation in sensing circuitry |
US10388360B2 (en) | 2016-07-19 | 2019-08-20 | Micron Technology, Inc. | Utilization of data stored in an edge section of an array |
US10733089B2 (en) | 2016-07-20 | 2020-08-04 | Micron Technology, Inc. | Apparatuses and methods for write address tracking |
US10387299B2 (en) | 2016-07-20 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods for transferring data |
US9767864B1 (en) | 2016-07-21 | 2017-09-19 | Micron Technology, Inc. | Apparatuses and methods for storing a data value in a sensing circuitry element |
US9972367B2 (en) | 2016-07-21 | 2018-05-15 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10303632B2 (en) | 2016-07-26 | 2019-05-28 | Micron Technology, Inc. | Accessing status information |
US10468087B2 (en) | 2016-07-28 | 2019-11-05 | Micron Technology, Inc. | Apparatuses and methods for operations in a self-refresh state |
US9990181B2 (en) | 2016-08-03 | 2018-06-05 | Micron Technology, Inc. | Apparatuses and methods for random number generation |
US11029951B2 (en) | 2016-08-15 | 2021-06-08 | Micron Technology, Inc. | Smallest or largest value element determination |
US10606587B2 (en) | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10466928B2 (en) | 2016-09-15 | 2019-11-05 | Micron Technology, Inc. | Updating a register in memory |
US10387058B2 (en) | 2016-09-29 | 2019-08-20 | Micron Technology, Inc. | Apparatuses and methods to change data category values |
US10014034B2 (en) | 2016-10-06 | 2018-07-03 | Micron Technology, Inc. | Shifting data in sensing circuitry |
US10529409B2 (en) | 2016-10-13 | 2020-01-07 | Micron Technology, Inc. | Apparatuses and methods to perform logical operations using sensing circuitry |
US9805772B1 (en) | 2016-10-20 | 2017-10-31 | Micron Technology, Inc. | Apparatuses and methods to selectively perform logical operations |
CN207637499U (zh) | 2016-11-08 | 2018-07-20 | 美光科技公司 | 用于形成在存储器单元阵列上方的计算组件的设备 |
US9761300B1 (en) | 2016-11-22 | 2017-09-12 | Micron Technology, Inc. | Data shift apparatuses and methods |
US10402340B2 (en) | 2017-02-21 | 2019-09-03 | Micron Technology, Inc. | Memory array page table walk |
US10268389B2 (en) | 2017-02-22 | 2019-04-23 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10403352B2 (en) | 2017-02-22 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for compute in data path |
CN108509013B (zh) * | 2017-02-28 | 2020-06-26 | 华为技术有限公司 | 一种处理指令的方法及装置 |
US10838899B2 (en) | 2017-03-21 | 2020-11-17 | Micron Technology, Inc. | Apparatuses and methods for in-memory data switching networks |
US10185674B2 (en) | 2017-03-22 | 2019-01-22 | Micron Technology, Inc. | Apparatus and methods for in data path compute operations |
US11222260B2 (en) | 2017-03-22 | 2022-01-11 | Micron Technology, Inc. | Apparatuses and methods for operating neural networks |
US10049721B1 (en) | 2017-03-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations |
US10043570B1 (en) | 2017-04-17 | 2018-08-07 | Micron Technology, Inc. | Signed element compare in memory |
US10147467B2 (en) | 2017-04-17 | 2018-12-04 | Micron Technology, Inc. | Element value comparison in memory |
US9997212B1 (en) | 2017-04-24 | 2018-06-12 | Micron Technology, Inc. | Accessing data in memory |
US10942843B2 (en) | 2017-04-25 | 2021-03-09 | Micron Technology, Inc. | Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes |
US10236038B2 (en) | 2017-05-15 | 2019-03-19 | Micron Technology, Inc. | Bank to bank data transfer |
US10068664B1 (en) | 2017-05-19 | 2018-09-04 | Micron Technology, Inc. | Column repair in memory |
US10013197B1 (en) | 2017-06-01 | 2018-07-03 | Micron Technology, Inc. | Shift skip |
US10262701B2 (en) | 2017-06-07 | 2019-04-16 | Micron Technology, Inc. | Data transfer between subarrays in memory |
US10152271B1 (en) | 2017-06-07 | 2018-12-11 | Micron Technology, Inc. | Data replication |
US10318168B2 (en) | 2017-06-19 | 2019-06-11 | Micron Technology, Inc. | Apparatuses and methods for simultaneous in data path compute operations |
US10162005B1 (en) | 2017-08-09 | 2018-12-25 | Micron Technology, Inc. | Scan chain operations |
US10534553B2 (en) | 2017-08-30 | 2020-01-14 | Micron Technology, Inc. | Memory array accessibility |
US10416927B2 (en) | 2017-08-31 | 2019-09-17 | Micron Technology, Inc. | Processing in memory |
US10741239B2 (en) | 2017-08-31 | 2020-08-11 | Micron Technology, Inc. | Processing in memory device including a row address strobe manager |
US10346092B2 (en) | 2017-08-31 | 2019-07-09 | Micron Technology, Inc. | Apparatuses and methods for in-memory operations using timing circuitry |
US10409739B2 (en) | 2017-10-24 | 2019-09-10 | Micron Technology, Inc. | Command selection policy |
US10522210B2 (en) | 2017-12-14 | 2019-12-31 | Micron Technology, Inc. | Apparatuses and methods for subarray addressing |
US10332586B1 (en) | 2017-12-19 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for subrow addressing |
CN109960188A (zh) * | 2017-12-26 | 2019-07-02 | 宁波菲仕运动控制技术有限公司 | 一种通用伺服控制处理器 |
US10614875B2 (en) | 2018-01-30 | 2020-04-07 | Micron Technology, Inc. | Logical operations using memory cells |
US10437557B2 (en) | 2018-01-31 | 2019-10-08 | Micron Technology, Inc. | Determination of a match between data values stored by several arrays |
US11194477B2 (en) | 2018-01-31 | 2021-12-07 | Micron Technology, Inc. | Determination of a match between data values stored by three or more arrays |
US10725696B2 (en) | 2018-04-12 | 2020-07-28 | Micron Technology, Inc. | Command selection policy with read priority |
US10440341B1 (en) | 2018-06-07 | 2019-10-08 | Micron Technology, Inc. | Image processor formed in an array of memory cells |
US10769071B2 (en) | 2018-10-10 | 2020-09-08 | Micron Technology, Inc. | Coherent memory access |
US11175915B2 (en) | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US10483978B1 (en) | 2018-10-16 | 2019-11-19 | Micron Technology, Inc. | Memory device processing |
US11675591B2 (en) | 2018-10-31 | 2023-06-13 | Advanced Micro Devices, Inc. | Selectively enabled result lookaside buffer based on a hit rate |
US11184446B2 (en) | 2018-12-05 | 2021-11-23 | Micron Technology, Inc. | Methods and apparatus for incentivizing participation in fog networks |
CN111860798A (zh) * | 2019-04-27 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
US12118056B2 (en) | 2019-05-03 | 2024-10-15 | Micron Technology, Inc. | Methods and apparatus for performing matrix transformations within a memory array |
US10867655B1 (en) | 2019-07-08 | 2020-12-15 | Micron Technology, Inc. | Methods and apparatus for dynamically adjusting performance of partitioned memory |
US11360768B2 (en) | 2019-08-14 | 2022-06-14 | Micron Technolgy, Inc. | Bit string operations in memory |
US11449577B2 (en) | 2019-11-20 | 2022-09-20 | Micron Technology, Inc. | Methods and apparatus for performing video processing matrix operations within a memory array |
US11853385B2 (en) | 2019-12-05 | 2023-12-26 | Micron Technology, Inc. | Methods and apparatus for performing diversity matrix operations within a memory array |
US11227641B1 (en) | 2020-07-21 | 2022-01-18 | Micron Technology, Inc. | Arithmetic operations in memory |
EP4195036A4 (en) * | 2020-08-24 | 2023-10-04 | Huawei Technologies Co., Ltd. | GRAPH INSTRUCTION PROCESSING METHOD AND DEVICE |
CN112558861B (zh) * | 2020-09-29 | 2023-03-10 | 北京清微智能科技有限公司 | 一种面向多核处理器阵列的数据加载和存储系统及方法 |
CN114489806B (zh) * | 2021-01-26 | 2024-08-09 | 沐曦集成电路(上海)有限公司 | 处理器装置及多维数据读写方法、计算设备 |
CN113992610B (zh) * | 2021-09-27 | 2024-01-26 | 西安电子科技大学 | 支持网络处理器的数据包包头处理电路系统及其控制方法 |
CN117971320B (zh) * | 2024-03-28 | 2024-08-13 | 集创北方(珠海)科技有限公司 | 用于显示系统的微处理器及寄存器写入方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1144934A (zh) * | 1994-06-03 | 1997-03-12 | 摩托罗拉公司 | 具有执行送数指令执行部件的数据处理器及其操作方法 |
US6449693B1 (en) * | 1999-04-05 | 2002-09-10 | International Business Machines Corporation | Method and apparatus for improving caching within a processor system |
CN1708747A (zh) * | 2002-10-11 | 2005-12-14 | 沙桥技术有限公司 | 用于多线程处理器中基于线程的存储器存取的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1187200A (en) * | 1982-02-24 | 1985-05-14 | David R. Ditzel | Computer with automatic mapping of memory contents into machine registers |
DE69224084T2 (de) * | 1991-01-15 | 1998-07-23 | Koninkl Philips Electronics Nv | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür |
US6604190B1 (en) * | 1995-06-07 | 2003-08-05 | Advanced Micro Devices, Inc. | Data address prediction structure and a method for operating the same |
US5813045A (en) * | 1996-07-24 | 1998-09-22 | Advanced Micro Devices, Inc. | Conditional early data address generation mechanism for a microprocessor |
US6009516A (en) * | 1996-10-21 | 1999-12-28 | Texas Instruments Incorporated | Pipelined microprocessor with efficient self-modifying code detection and handling |
US6000016A (en) * | 1997-05-02 | 1999-12-07 | Intel Corporation | Multiported bypass cache in a bypass network |
US6161167A (en) * | 1997-06-27 | 2000-12-12 | Advanced Micro Devices, Inc. | Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group |
US6134649A (en) * | 1997-11-17 | 2000-10-17 | Advanced Micro Devices, Inc. | Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction |
US6438650B1 (en) * | 1998-12-16 | 2002-08-20 | Intel Corporation | Method and apparatus for processing cache misses |
US6728867B1 (en) * | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
US20030163643A1 (en) * | 2002-02-22 | 2003-08-28 | Riedlinger Reid James | Bank conflict determination |
US7941585B2 (en) * | 2004-09-10 | 2011-05-10 | Cavium Networks, Inc. | Local scratchpad and data caching system |
US7340591B1 (en) * | 2004-10-28 | 2008-03-04 | Altera Corporation | Providing parallel operand functions using register file and extra path storage |
-
2010
- 2010-01-29 CN CN201010104030.9A patent/CN102141905B/zh active Active
-
2011
- 2011-01-28 US US13/520,572 patent/US9047193B2/en active Active
- 2011-01-28 WO PCT/CN2011/070776 patent/WO2011091768A1/en active Application Filing
- 2011-01-28 EP EP11736650.0A patent/EP2529302A4/en not_active Withdrawn
-
2015
- 2015-05-01 US US14/701,526 patent/US9262164B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1144934A (zh) * | 1994-06-03 | 1997-03-12 | 摩托罗拉公司 | 具有执行送数指令执行部件的数据处理器及其操作方法 |
US6449693B1 (en) * | 1999-04-05 | 2002-09-10 | International Business Machines Corporation | Method and apparatus for improving caching within a processor system |
CN1708747A (zh) * | 2002-10-11 | 2005-12-14 | 沙桥技术有限公司 | 用于多线程处理器中基于线程的存储器存取的方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于存储体系结构的处理器性能提升;任浩琪等;《中国科技论文在线》;20050331;第28页-第30页 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9472265B2 (en) | 2013-03-04 | 2016-10-18 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9466340B2 (en) | 2013-07-26 | 2016-10-11 | Micron Technology, Inc. | Apparatuses and methods for performing compare operations using sensing circuitry |
US9589607B2 (en) | 2013-08-08 | 2017-03-07 | Micron Technology, Inc. | Apparatuses and methods for performing logical operations using sensing circuitry |
US9530475B2 (en) | 2013-08-30 | 2016-12-27 | Micron Technology, Inc. | Independently addressable memory array address spaces |
US9437256B2 (en) | 2013-09-19 | 2016-09-06 | Micron Technology, Inc. | Data shifting |
US9449675B2 (en) | 2013-10-31 | 2016-09-20 | Micron Technology, Inc. | Apparatuses and methods for identifying an extremum value stored in an array of memory cells |
US9430191B2 (en) | 2013-11-08 | 2016-08-30 | Micron Technology, Inc. | Division operations for memory |
US9455020B2 (en) | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US9496023B2 (en) | 2014-06-05 | 2016-11-15 | Micron Technology, Inc. | Comparison operations on logical representations of values in memory |
US9449674B2 (en) | 2014-06-05 | 2016-09-20 | Micron Technology, Inc. | Performing logical operations using sensing circuitry |
US9589602B2 (en) | 2014-09-03 | 2017-03-07 | Micron Technology, Inc. | Comparison operations in memory |
US10593377B2 (en) | 2014-10-16 | 2020-03-17 | Micron Technology, Inc. | Multiple endianness compatibility |
US10685699B2 (en) | 2014-10-24 | 2020-06-16 | Micron Technology, Inc. | Sort operation in memory |
US9583163B2 (en) | 2015-02-03 | 2017-02-28 | Micron Technology, Inc. | Loop structure for operations in memory |
US11048428B2 (en) | 2016-11-11 | 2021-06-29 | Micron Technology, Inc. | Apparatuses and methods for memory alignment |
US12142347B2 (en) | 2022-11-07 | 2024-11-12 | Lodestar Licensing Group Llc | Apparatuses and methods for performing logical operations using sensing circuitry |
Also Published As
Publication number | Publication date |
---|---|
US9262164B2 (en) | 2016-02-16 |
US9047193B2 (en) | 2015-06-02 |
WO2011091768A1 (en) | 2011-08-04 |
US20130111137A1 (en) | 2013-05-02 |
US20150234660A1 (en) | 2015-08-20 |
CN102141905A (zh) | 2011-08-03 |
EP2529302A4 (en) | 2016-03-02 |
EP2529302A1 (en) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102141905B (zh) | 一种处理器体系结构 | |
US11204769B2 (en) | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines | |
US10860326B2 (en) | Multi-threaded instruction buffer design | |
US8200949B1 (en) | Policy based allocation of register file cache to threads in multi-threaded processor | |
US8850121B1 (en) | Outstanding load miss buffer with shared entries | |
US7346760B2 (en) | Data processing apparatus of high speed process using memory of low speed and low power consumption | |
CN103513957A (zh) | 高性能缓存系统和方法 | |
CN102279818B (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN100541665C (zh) | 可编程并行查找存储器 | |
US8793435B1 (en) | Load miss result buffer with shared data lines | |
CN103413569B (zh) | 一读且一写静态随机存储器 | |
US20130297877A1 (en) | Managing buffer memory | |
US6560676B1 (en) | Cache memory system having a replace way limitation circuit and a processor | |
US8806135B1 (en) | Load store unit with load miss result buffer | |
CN104424128A (zh) | 变长指令字处理器系统和方法 | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
US20140013087A1 (en) | Processor system with predicate register, computer system, method for managing predicates and computer program product | |
CN103514107B (zh) | 高性能数据缓存系统和方法 | |
US5752271A (en) | Method and apparatus for using double precision addressable registers for single precision data | |
CN114116533B (zh) | 利用共享存储器存储数据的方法 | |
US8631173B2 (en) | Semiconductor device | |
US9021238B2 (en) | System for accessing a register file using an address retrieved from the register file | |
TW201706830A (zh) | 處理編碼格式以直譯關於群組指令的資訊 | |
JPS6194159A (ja) | メモリ装置 | |
CN115129233B (zh) | 数据处理装置、方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |