CN102141905A - 一种处理器体系结构 - Google Patents

一种处理器体系结构 Download PDF

Info

Publication number
CN102141905A
CN102141905A CN 201010104030 CN201010104030A CN102141905A CN 102141905 A CN102141905 A CN 102141905A CN 201010104030 CN201010104030 CN 201010104030 CN 201010104030 A CN201010104030 A CN 201010104030A CN 102141905 A CN102141905 A CN 102141905A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
memory
data
processor
address
instruction
Prior art date
Application number
CN 201010104030
Other languages
English (en)
Other versions
CN102141905B (zh )
Inventor
任浩琪
林正浩
Original Assignee
上海芯豪微电子有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing, i.e. using more than one address operand
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Data result bypassing, e.g. locally between pipeline stages, within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing
    • Y02D10/10Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply
    • Y02D10/13Access, addressing or allocation within memory systems or architectures, e.g. to reduce power consumption or heat production or to increase battery life

Abstract

一种可以从存储器直接向运算单元提供操作数,并将运算单元执行结果写回存储器的处理器体系结构,没有对操作数的装载(load)、存储(store)指令,能提高程序运行效率及程序代码的密度。

Description

一种处理器体系结构

技术领域

[0001] 本发明涉及处理器体系结构领域。 背景技术

[0002] 现有的处理器体系结构在执行操作时通常先用专门的数据装载指令将操作数从 存储器中装载(load)到寄存器中,再送到运算单元执行相应操作;执行完毕后,先将执行 结果保存在寄存器中,再用专门的数据存储指令将寄存器中的数据存储(store)到存储器 中。即便是支持操作数存储器寻址的处理器,由于存储器端口数目和带宽的限制,无法同时 从存储器直接取得运算单元所需的全部操作数,而是先将一部分操作数从存储器装载到寄 存器中,再由存储器和寄存器同时提供运算单元所需的操作数。

[0003] 缓存(cache)的作用是将存储器中的一部分内容(即操作数)复制在缓存中,使 这些内容能在短时间内由处理器快速存取,以保证流水线的持续运行。然而,由于缓存是存 储器的一部分镜像,即便存在于缓存中的操作数,也必须先被全部或部分地装载到寄存器 中后,才能被运算单元使用,并没有一种由缓存直接向运算单元提供全部操作数并将执行 结果直接写回缓存的处理器体系结构。

[0004] 根据统计,在传统处理器的程序中,装载指令和存储指令占程序中指令总数30% 左右。由于装载指令和存储指令本身并不涉及算术逻辑运算,因此这类指令的比重越大,处 理器运算单元的利用率越低,处理器的运算能力越无法得到充分的发挥。

[0005] 专门的装载/存储单元(load store unit)的提出在一定程度上实现了装载/存 储指令与算术逻辑运算指令的并行执行,提高了处理器运算单元的利用率。然而装载/存 储指令涉及的操作数与之后使用这些操作数的运算指令之间的数据相关性使得装载/存 储单元带来的性能提升并不理想。此外,额外的装载/存储单元增加了处理器的复杂性。

[0006] 本发明公开了全新的处理器体系结构,从根本上解决处理器的效率问题。

发明内容

[0007] 本发明提出了一种基于直接支持运算单元(Execution Unit)的零级存储器新的 处理器体系结构。所述处理器体系结构与现有的传统处理器体系结构相比,有以下不同:

[0008] (1)没有对操作数的装载指令;

[0009] (2)没有对执行结果的存储指令;

[0010] (3)用零级存储器代替传统处理器体系结构中的通用寄存器堆(RegisterFile); 所述零级存储器的端口数大于或等于三个。

[0011] 在传统处理器体系结构的存储层次中,比一级缓存更低存储层次的是通用寄存器 堆。本发明所述的零级存储器在对运算单元的运算支持效果上相当于通用寄存器堆,但本 质上是存储器,内容是更低层次存储器中一部分内容的镜像,由存储机制自动填充和替换, 不需要专门的指令进行装载和存储。

[0012] 本发明所述的寄存器需要专门的装载/存储指令按寄存器号寻址进行装载或存储数据,如寄存器堆和处理器状态寄存器(processor status registers);而本发明所述 存储器是整个系统存储器中一部分内容的镜像,由存储地址寻址,所述存储器中数据的填 充和替换按某种机制自动进行,不需要专门的指令明示(explicit),如各级缓存和内存。

[0013] 本发明所述的处理器体系结构中的运算单元能直接从存储器取得操作数、并将执 行结果写回存储器。此外,所述处理器体系结构包含下列部分特征或全部特征:

[0014] (1)没有寄存器堆;

[0015] (2)没有将操作数从存储器装载(load)到寄存器堆的指令;

[0016] (3)没有将执行结果从寄存器堆存储(store)到存储器中的指令;

[0017] (4)对存储器的寻址方式包括立即数直接寻址、基地址加偏移量方式寻址。

[0018] 本发明所述的处理器体系结构支持复数个流水线段同时对逻辑意义上的同一个 存储器进行取操作数或写回执行结果的访问,可以是同时进行单数个或复数个数据的读取 和写回。

[0019] 本发明所述处理器体系结构中的指令格式可以只支持单数据寻址,也可以支持双 数据寻址,还可以支持三数据寻址或更多数据寻址。所述数据寻址包括对运算单元所需的 操作数的寻址和对运算单元执行结果的寻址。

[0020] 本发明所述处理器体系结构中的寻址方式可以是通过指令码中的立即数直接寻 址。

[0021] 本发明所述处理器体系结构中的寻址方式也可以通过基地址加指令码中的立即 数得到的地址寻址。

[0022] 基于本发明所述的处理器体系结构构成的处理器包含零级存储器;所述零级存储 器具有同时支持读取至少两个数据并写回至少一个数据的功能,可以由一个单独的多端口 存储器构成,也可以由复数个单端口或多端口存储器构成。

[0023] 本发明所述的零级存储器中储存的是处理器对应的主存储器中内容的子集,即所 述零级存储器是部分主存储器的镜像,具有同时进行多个数据读写的功能,具体来说,至少 能支持同时读取两个数据并写入一个数据。

[0024] 所述零级存储器的工作频率应适应运算单元工作频率,指所述零级存储器能以运 算单元能达到的最高时钟频率不间断地提供操作数并接收执行结果。

[0025] 举例而言,若对应所述体系结构的指令中最多一次用到三个数据寻址,当零级存 储器支持在同一时钟周期内完成读取两个数据并写入一个数据,那么所述零级存储器的时 延应当小于或等于运算单元的时延。若达不到所述的时延,则零级存储器即为制约处理器 性能的瓶颈。

[0026] 当本发明所述零级存储器由复数个单端口或多端口存储器构成时,所述多端口存 储器至少由一个具有单数个端口或复数个端口的第一存储器和一个具有复数个端口的第 二存储器构成。

[0027] 当本发明所述零级存储器由复数个单端口或多端口存储器构成时,所述多端口存 储器还可以包括一个具有单数个端口或复数个端口的第三存储器,用于暂存第一存储器的 输出数据,以供运算单元获取操作数。

[0028] 本发明所述第一存储器的端口越少,则第二存储器的端口就越多以补偿。

[0029] 根据本发明技术方案,以三端口零级存储器为例,可以有以下几种构成情况的实施例。此外还可以有更多的构成情况,均在本发明技术方案的范围内。

[0030] (1)由一个具有三个端口的存储器构成,所述具有三个端口的存储器可以同时支 持两个读数据操作和一个写数据操作,以实现向运算单元提供操作数并写回执行结果的功 能;

[0031] (2)由一个具有两个端口的第一存储器和一个具有三个端口的第二存储器构成, 所述第一存储器用于向运算单元提供操作数,并接收从第二存储器来的写回数据,所述第 二存储器用于向运算单元提供操作数并接收执行结果,以及将数据写回第一存储器;

[0032] (3)由一个具有三个端口的第一存储器和一个具有两个端口的第二存储器构成, 所述第一存储器用于向运算单元及所述第二存储器提供操作数并接收执行结果,所述第二 存储器用于接收从所述第一存储器来的操作数并向运算单元提供操作数。

[0033] 本发明所述的第一存储器或第二存储器可以由复数个大小相同或不同的存储器 构成;当所述第一存储器由复数个不同大小的存储器构成时,较小的存储器可以存有较大 的存储器中的一部分数据。

[0034] 当本发明所述的第一存储器或第二存储器是由复数个存储器构成时,若要写入数 据,则通过复数个所述存储器的端口向相同地址写入同样的数据,若要读出数据,则可以根 据地址的不同,通过复数个所述存储器的端口读出不同的复数个数据,或只通过复数个所 述存储器中的一个的端口读出数据。

[0035] 本发明所述的第二存储器具有以下特征:

[0036] (1)用于存储操作数及所述操作数对应的地址信息;所述地址信息可以是地址 值,也可以是基地址值及偏移量;还可以是基指针寄存器号及偏移量;

[0037] (2)所述用于存储操作数的操作数存储单元与用于存储操作数地址的地址信息存 储单元一一对应;

[0038] (3)具有读、写指针,可以按特定算法写入或读出操作数;

[0039] (4)可以将单数个或复数个输入地址信息与存储的地址信息进行匹配,并输出匹 配成功的单数个或复数个对应操作数;所述输入地址信息可以是地址值,也可以是基地址 值及偏移量,还可以是基指针寄存器号及偏移量。

[0040] 本发明所述的第二存储器还可以具有写融合(write merge)功能,即被写入的数 据对应的地址信息在所述第二存储器中已存在,则可以将所述写入的数据替换部分或全部 已存在的数据。

[0041] 举例而言,所述第二存储器可以由操作数存储单元和地址信息存储单元构成。按 循环顺序写入操作数时,将操作数写入写指针指向的操作数存储单元,并将所述操作数对 应的地址信息写入所述操作数存储单元对应的地址信息存储单元,再将写指针前移,即增 加写指针对应的地址。按循环顺序读出操作数时,则将读指针指向的操作数存储单元及其 对应的地址信息读出,再将读指针前移。当所述写指针或读指针已指向所述第二存储器的 最后一项操作数存储单元时,若前移指针,则所述写指针或读指针将指向所述第二存储器 的第一项操作数存储单元。此时,所述第二存储器类似一个循环先入先出队列(FIFO),具备 循环先入先出队列写入、读出,及数据有效性、队列满、队列空等特性。所述写入用于接收运 算单元的执行结果。所述读出,用于将数据写回所述第一存储器。

[0042] 当从所述第二存储器向运算单元提供操作数时,所述第二存储器中的全部有效地

7址信息存储单元并行与输入的地址信息进行匹配,并输出匹配成功的地址信息对应的操作 数存储单元中的操作数。此时,所述第二存储器的结构形式类似一个内容寻址存储器,特征 是存储的每一组地址均可以与复数组输入地址并行匹配,输出所述复数组输入地址匹配成 功时对应的数据。所述匹配成功而输出的操作数即运算单元所需的操作数。

[0043] 基于本发明所述的处理器体系结构构成的处理器还可以包含基指针(BP,Base Pointer)寄存器,用于存储对零级存储器进行的以基地址加偏移量方式寻址时的基地址。

[0044] 本发明所述的处理器体系结构中每个有效的基指针寄存器存储与所述零级存储 器中的一部分数据存储单元对应的基地址;若所述第二存储器存储的地址信息是基指针寄 存器号及偏移量、且所述有效的基指针寄存器的内容被改写后,第二存储器中对应于基指 针寄存器原基地址的数据存储单元中的数据应被无效化;若所述数据存储单元中的数据 应该但还没有写回第一存储器时,则需要先将被更改过的数据写回第一存储器后再被无效 化。

[0045] 举例而言,根据本发明所述处理器体系结构,可以由指令码中对应操作数或执行 结果的基指针寄存器号找到对应的地址寄存器,从而得到该操作数或执行结果的基地址。 再将该基地址与指令码中对应操作数或执行结果的偏移地址相加,从而得到对应操作数或 执行结果的实际地址,进而完成寻址。

[0046] 本发明所述处理器体系结构可以具有专门的基地址装载指令,通过所述地址装载 指令可以将需要用到的基地址装载到所述基指针寄存器中;也可以以当前基地址为指针, 根据程序运行的实际情况,加上一定的偏移量,从而得到新的基地址,并自动将所述新的基 地址装载到所述基指针寄存器中。

[0047] 根据本发明所述技术方案,使用复数个基指针寄存器,可以使运算单元能获取到 数据的地址空间不连续的,用较少的指令位数实现对位置上分散的数据的访问,能有效地 缩短所述指令的字长,增大代码密度。

[0048] 本发明所述处理器体系结构的指令中不同的操作数或执行结果可以共用同一组 基指针寄存器,也可以具有各自独立或部分独立的基指针寄存器。即所述基指针寄存器可 以仅由一组地址寄存器构成,用于操作数一、操作数二和执行结果的寻址;也可以由三组地 址寄存器构成,所述三组地址寄存器分别用于操作数一、操作数二和执行结果的寻址。此外 由不同操作数共用一组基指针寄存器、执行结果用另一组基指针寄存器,或者一个操作数 与执行结果共用一组基指针寄存器,另一个操作数用另一组基指针寄存器的情况也类似。

[0049] 所述基指针寄存器可以全部用来存储基地址,也可以有单数个或复数个基指针寄 存器用于表示向所述基指针寄存器对应的存储空间不可写入。

[0050] 举例而言,当对指令译码得到的对应于执行结果的基指针寄存器号对应的地址寄 存器是用于表示不可写入的,那么所述执行结果不会被真正写入所述零级存储器中,即所 述执行结果被舍弃。

[0051] 本发明所述的第二存储器中的一部分可以作为执行结果的暂存空间,对所述暂存 空间的内容不做写回第一存储器的操作。所述第二存储器中的暂存空间中的内容只供运算 单元执行后续指令时作为操作数使用。

[0052] 在所述处理器体系结构中,还可以指定单数个或复数个基指针寄存器号,使所述 基指针寄存器对应第二存储器中的存储空间为暂存空间,对所述暂存空间的内容不做写回第一存储器的操作。所述第二存储器中的暂存空间中的内容为中间结果只供运算单元执行 后续指令时作为操作数使用。

[0053] 所述处理器体系结构也可以具有用于暂存执行结果的计算/转移/状态寄存器。 所述计算/转移/状态寄存器中的内容只供执行后续指令时判断转移条件、读写处理器状 态或进行后续指令运算时作为操作数使用。

[0054] 在传统的处理器体系结构中,用于暂存执行结果的寄存器中的值是可以被写回到 存储器中的,用于暂存执行结果的存储器中的内容也可以被写回到更低存储层次的存储器 中。根据本发明技术方案,所述暂存空间或计算寄存器的内容可以不被写回到第一存储器, 因此也就不会被写回到更低存储层次,可以降低具体设计的复杂度,并提高处理器整体效率。

[0055] 本所述的处理器体系结构中还可以有基指针模式寄存器。所述基指针模式寄存 器也可以作为线程寄存器用于表示当前运行的线程的号码。根据本发明技术方案,可以将 基指针寄存器分为复数组供不同的处理器线程使用,所述基指针模式寄存器中的不同值对 应基指针寄存器的不同组别,所述基指针模式寄存器中每个模式代表一个线程。此时所述 基指针模式寄存器中内容就是线程号码(PID)。在不同线程对应的指令与数据都能被明确 区分的情况下(如发明“一种低缺失率、低缺失惩罚的缓存方法和装置”,中国专利申请号 200910247204. 4),采用本发明技术方案可以实现线程的快速切换。

[0056] 本所述的复数组基指针寄存器的数量与所述基指针模式寄存器中能表示的模式 的个数、即模式寄存器位宽有关。举例而言,两者关系可以是:所述复数组的数量等于以2 为底、以所述基指针模式寄存器位宽为幂的数。

[0057] 本所述的处理器体系结构中还可以有个数等于所述处理器体系结构能支持的最 大线程数的复数组处理器状态寄存器组,用于在线程切换时保存处理器状态,并提供与新 线程配套的处理器状态。所述基指针模式寄存器中的不同值对应不同的处理器状态寄存器组。

[0058] 在传统处理器体系结构中,一旦需要切换线程,必须将原线程的状态保存到存储 器中或专用的状态寄存器中,再切换成新的线程,并将事先储存的状态恢复后才能执行新 线程中的指令。本发明所述体系结构可以在切换线程的同时保存并更新状态,以满足快速 线程切换的要求。

[0059] 当所述处理器中有所述基指针模式寄存器时,可以具有用于装载所述基指针模式 寄存器的指令。所述用于装载所述基指针模式寄存器的指令可以是专门的基指针模式装载 指令,也可以是与所述基地址装载指令相同操作码、但目标寄存器号不同的指令。

[0060] 根据本发明所述技术方案,使用基指针模式寄存器可以增加对应操作数或执行结 果的当前可用的基地址的数量,减少基地址的装载次数及对应在所述零级存储器中数据写 回所述存储层次中较低层次的次数,能提高效率。

[0061] 本发明所述处理器体系结构中的全部指令可以都不包含存储数据的通用寄存器 号,可以包含基指针寄存器号和偏移地址,也可以只包含偏移地址。

[0062] 所述指令格式中可以不明示基指针寄存器号,此时基地址是默认的。例如指令中 的基指针寄存器号和偏移地址的位置可以一同被用于构成更长长度的偏移地址。但此时相 应的基地址寄存器依然存在并可以被基地址装载/存储指令装载或读出,此时在所述基地址寄存器中的基地址就是在读取操作数或写回执行结果时默认的基地址,不需要在运算指 令中明示。

[0063] 本发明所述体系结构的处理器可应用于上海芯豪微电子有限公司的发明 “基于单一指令集微处理器运算单元的可配置多核/众核系统”(中国专利申请号 200810203778. 7)、“针对多核/众核处理器程序分割的后编译系统”(中国专利申请号 200810203777. 2)、“一种数据处理的方法与装置”(中国专利申请号200910046117. 2)、“一 种数据处理的方法与装置”(中国专利申请号200910208432. 0),构成前一个处理器的执行 结果直接作为输入送给后一个处理器的串行连接多核结构,所述串行连接多核结构中的每 个处理器分别执行完整程序的一部分,所有处理器接力实现完整程序的功能。所述处理器 核均没有寄存器堆,也没有将操作数从存储器装载到寄存器堆或将执行结果从寄存器堆存 储到存储器的指令。

[0064] 当由基于传统体系结构的处理器构成串行连接多核结构时,数据可以由装载和存 储指令通过两个处理器核之间的共享存储器进行传递,但前一个处理器核中通用寄存器堆 的值必须通过额外的存储、装载指令,或通过专门的数据通道传递到后一个处理器核的通 用寄存器堆中,使所述后一个处理器核能在与前一个处理器核相同状态的前提下进行后续 的程序执行。

[0065] 当采用基于本发明所述处理器体系结构的处理器构成串行连接多核结构时,由于 处理器内部没有传统体系结构中的通用寄存器,每个处理器的所有执行结果都被直接传递 所述处理器与后一个处理器之间共享的零级存储器中,因此能更高效率地实现所述串行连 接多核结构。

[0066] 本发明所述处理器体系结构的流水线段可以依次为:

[0067] (1)指令读取段,从指令存储器读取指令;

[0068] (2)指令译码段,指令译码,得到操作数地址信息;

[0069] (3)数据读取段,根据指令里包含的操作数地址信息从零级存储器中读出单数个 或复数个操作数;

[0070] (4)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的 单数个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;

[0071] (5)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。

[0072] 对于上述任意一种流水线,若零级存储器不能在提供操作数的同时被写入,则可 以在数据写回段将执行结果写入第二存储器,当第一存储器用来接收第二存储器送来的数 据的输入端口有空闲时,第二存储器将存储的数据依次写回第一存储器。

[0073] 根据本发明技术方案,可以直接用基指针寄存器号与偏移地址对第一存储器进行 索引寻址,因此可以将上述的指令译码段和数据读取段合并为译码取数段,使流水线更为 紧凑。

[0074] 本发明所述处理器体系结构的流水线段还可以依次为:

[0075] (1)指令读取段,从指令存储器读取指令;

[0076] (2)译码取数段,指令译码,并根据指令里包含的操作数地址信息从零级存储器中 读出单数个或复数个操作数;

[0077] (3)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的单数个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;

[0078] (4)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。

[0079] 上述两种流水线的共性都在于没有使用寄存器堆,都支持复数个流水线段同时对 同一个存储器进行取操作数或写回执行结果的访问,可以是同时进行单数个或复数个数据 的读取和写回。在上述两种流水线结构的基础上增加流水线段依然属于本发明技术方案的 一部分。

[0080] 有益效果:

[0081] 本发明所述处理器体系结构及基于所述体系结构实现的处理器与现有的体系结 构及对应的传统处理器相比,没有对操作数的装载、存储指令。根据统计,在传统处理器的 程序中,装载和存储指令占程序中指令总数30%左右,由于本发明所述处理器没有这类指 令,因此能提高程序运行效率及程序代码的密度。

附图说明

[0082] 虽然该发明可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的 实施图例并进行详细阐述。应当理解的是,发明者的出发点不是将该发明限于所阐述的特 定实施例,正相反,发明者的出发点在于保护所有基于由本权利声明定义的精神或范围内 进行的改进、等效转换和修改。

[0083] 图1是本发明所述体系结构的基本实施例。

[0084] 图2是本发明所述体系结构的改进实施例。

[0085] 图3是本发明所述处理器体系结构中第二存储器的一种具体实现的实施例。

[0086] 图4是本发明所述处理器体系结构中处理器运算单元与零级存储器连接方式的8 种实施例。

[0087] 图5是本发明所述处理器体系结构对应流水线划分的两种实施例。

[0088] 图6是本发明所述处理器体系结构指令集中指令格式的实施例。

[0089] 图7是基于本发明所述处理器体系结构的处理器构成的串行连接多核结构的实 施例。

具体实施方式

[0090] 图1是本发明所述体系结构的基本实施例。图1(a)中的零级存储器(100)向处 理器核(CPU core) (101)提供两个操作数(111、112),并接受处理器核的执行结果(114), 零级存储器(100)由处理器核产生的地址(11¾寻址。

[0091] 图2是本发明所述体系结构的改进实施例。图2(a)和图2(b)中的零级存储器 (100)向处理器核(101)提供两个操作数(111、112),并接受处理器核的执行结果(114), 零级存储器(100)由处理器核产生的地址(11¾寻址。图2(a)显示了零级存储器重填 (refill)的途径,其中从更低级存储器来的重填总线(116)将重填数据从低级存储器传输 到零级存储器(100),选择器(115)选择将重填总线(116)或处理器核给出总线(114)上的 数据送给零级存储器。图2(b)与图2(a)类似,差别在零级存储器(1001)有两个写入,重填 总线(116)与结果总线(114)各自接到自己的写口。后续图例为便于说明起见,不再列出 重填路径。大规模三端口存储器的成本较高,图2(c)中零级存储器由一个只有一个读口和一个写口,或者只有一个读/写口的第一存储器(100¾与一个后置的第二存储器(102)构 成,协作完成如图1、图2(a)和图2(b)中三端口存储器的同样功能。此例中处理器核(101) 提供地址(11¾供第一存储器(100¾及第二存储器(10¾寻址。处理器核(101)的执行 结果通过总线(117)存入第二存储器(102)。第一存储器(1002)通过总线(111)提供一个 操作数给处理器核(101),第二存储器(102)通过总线(112)提供另一个操作数(即以前运 算的结果)给处理器核(101)。当第一存储器(1002)的写口有空闲时,暂存在第二存储器 (102)中的结果也可通过总线(112)写回至第一存储器(1002)。

[0092] 请参阅图3,本实施例为本发明所述处理器体系结构中第二存储器的一种具体实 现的实施例。

[0093] 在本实施例中,地址通过写地址总线(1401)写入指定项。两个取地址总线(1410、 1402)可同时输入两个地址与地址存储器所有项进行比较,产生的比较结果(140¾控制数 据存储器的相应项将对应数据取出到取数据总线(1404)和取数据总线(1411)上。数据通 过写数据总线(1405)写入指定项。指向当前写入项的写指示器(1406)为FIFO结构,以实 现多项的连续写入。数据通过读数据总线(1407)读出,对应的地址通过读地址总线(1409) 读出。指向当前读出项的读指示器(1408)亦为FIFO结构,以实现多项的连续读出。读写 机制保证所有项的读出值一定为写入的最新值。

[0094] 根据本发明技术方案,对第二存储器进行写融合匹配需要对每个地址额外增加一 个比较器,所述比较器在本实施例中被省略。

[0095] 图4是本发明所述处理器体系结构中处理器运算单元与零级存储器连接方式的8 种实施例。

[0096] 在图4(a)中,与处理器运算单元(30¾连接的零级存储器由第一存储器(301)和 第二存储器(303)组成。运算单元(302)需要两个操作数,并产生一个执行结果。在本实 施例中,第一存储器(301)支持同时提供或接收两个数据。第一存储器(301)可以是四端 口的存储器,即具有两组输出数据总线和两组输入数据总线,且支持同时输出两组数据、或 同时输入两组数据、或同时输入一组数据并输出一组数据;第一存储器(301)也可以是两 端口的存储器,即具有两组输入/输出数据总线,支持同时输出两组数据、或同时输入两组 数据、或同时输入一组数据并输出一组数据。第二存储器(30¾支持同时提供三个输出数 据(316、317、318)并接收一个输入数据(315),是四端口的存储器。第一存储器(301)和第 二存储器(30¾所需数据寻址地址均由运算单元(30¾产生。为便于描述,下面将以第一 存储器(301)是四端口的存储器为例进行说明,当第一存储器(301)是两端口的存储器时, 情况类似。

[0097] 运算单元(302)所需的一个操作数(313)的来源可以是第一存储器(301)的输出 数据(308)或第二存储器(303)的输出数据(316),经多路选择器(306)选择得到;另一个 操作数(314)的来源可以是第一存储器(301)的输出数据(310)或第二存储器(303)的输 出数据(317),经多路选择器(307)选择得到。运算单元(302)的执行结果(315)作为输入 数据送到第二存储器(303)。

[0098] 第一存储器(301)的一个输入数据(309)的来源可以是从外部存储器读取来的数 据(31¾或从第二存储器(30¾来的输出数据(318),经多路选择器(304)选择得到;另一 个输入数据(311)的来源可以是从外部存储器读取来的数据(31¾或从第二存储器(303)来的输出数据(318),经多路选择器(30¾选择得到。第一存储器(301)的两个输出数据 (308,310)分别送往与运算单元(30¾连接的两个多路选择器(306、307)。

[0099] 第二存储器(303)的输入数据(31¾来自运算单元的输出。第二存储器(303) 的一个输出数据(318)送往与第一存储器(301)连接的多路选择器(304)和多路选择器 (305);另外两个输出数据(316、317)分别送往与运算单元(30¾连接的两个多路选择器 (306,307)。对所述第二存储器的寻址是通过地址信息的匹配来实现的,并不是通过地址进 行索引(index)寻址。

[0100] 在本实施例中,运算单元最初只能从第一存储器(301)获得操作数,并将执行结 果写入第二存储器(303)。由于之前运算的结果通常会被用做后续运算的操作数,因此,之 后的部分运算会从第二存储器(30¾获得部分或全部操作数,并将执行结果写入第二存储 器(30¾。当运算单元从第二存储器(30¾取操作数时,第一存储器(301)可以进行从外部 存储器获取新数据的操作,或将第二存储器(30¾送来的数据写入第一存储器(301)。如此 即可根据本发明技术方案,实现存储器不经过寄存器堆而直接向运算单元提供操作数并写 回执行结果。

[0101] 图4(b)与图4(a)在结构上基本类似,差别在于第二存储器(3031)支持同时提供 两个输出数据(317、3181)并接收一个输入数据(315),是三端口的存储器,且外部存储器 的输入数据(3121)不与第二存储器(3031)的输出数据(3181)选择,直接送到第一存储器 (301)的输入端口。此外第二存储器(3031)的输出数据(3181)直接送到第一存储器(301) 的另一个输入端口及与运算单元(30¾连接的多路选择器(306)。

[0102] 在本实施例中,运算单元最初只能从第一存储器(301)获得操作数,并将执行结 果写入第二存储器(3031)。之后的部分运算会从第二存储器(30¾获得部分或全部操作 数,并将执行结果写入第二存储器(303)。当运算单元(30¾选择第二存储器(3031)的输 出数据(3181)为操作数(313)时,输出数据(3181)同时被写回第一存储器(301);当运算 单元(30¾选择第二存储器(3031)的输出数据(317)为操作数(314)时,外部存储器的输 入数据(3121)可以被同时写入第一存储器(301)。如此即可根据本发明技术方案,实现存 储器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。

[0103] 图4(c)与图4(a)在结构上基本类似,差别在于第一存储器(3011)支持同时提供 两个数据,或同时提供一个数据并接收一个数据,且外部存储器的输入数据(312¾和第二 存储器(30¾的输出数据(318¾均只送到与第一存储器(3011)连接的多路选择器(305), 经选择后作为第一存储器(301)的输入数据(311)。

[0104] 在本实施例中,从外部存储器或第二存储器(30¾写回第一存储器(3011)的途径 少了,但第一存储器(3011)的结构更为简单,且能够实现存储器不经过寄存器堆而直接向 运算单元提供操作数并写回执行结果。

[0105] 图4(d)与图4(b)在结构上基本类似,差别在于第一存储器(3012)在一个时刻只 支持提供一个数据,或接收一个数据,且接收的输入数据来源是从外部存储器来的输入数 据(3122),或第二存储器(3031)的输出数据(3183),经多路选择器(30¾选择得到。此外, 第二存储器(3031)的输出数据(3171)被分别送往与运算单元(30¾连接的两个多路选择 器(306、307)作为可能的操作数。

[0106] 由于处理器支持的指令中有些是单操作数指令,还有一些指令中只有一个操作数

13来源于存储器,另一个来源于指令解码得到的立即数,因此并不是每条指令都需要从存储 器获取两个操作数。在本实施例中,运算单元(302)最初可以执行上述只需要从存储器获 取一个操作数的指令,即从第一存储器(3012)获取一个操作数,并将执行结果写入第二存 储器(3031);或通过运算单元(30¾将操作数从第一存储器(301¾移动(move)到第二 存储器(3031),之后的部分运算会从第二存储器(3031)获得部分或全部操作数,并将执行 结果写入第二存储器(3031)。第一存储器(301¾不支持同时读写数据,因此当运算单元 (302)不需要从第一存储器(3012)获取操作数时,第一存储器(3012)可以写入从外部存储 器来的输入数据(312¾或从第二存储器(3031)来的输出数据(318¾。如此即能实现存储 器不经过寄存器堆而直接向运算单元提供操作数并写回执行结果。

[0107] 图4(e)与图4(d)在结构上基本类似,差别在于第二存储器(3032)只支持同时 提供一个输出数据(3184)并接收一个输入数据(315),是两端口的存储器。此外,第二存 储器(3032)的输出数据(3184)被送往运算单元(302)作为一个操作数,并被送往与运算 单元(30¾连接的多路选择器(307)作为可能的另一个操作数,以及被送往与第一存储器 (3012)连接的多路选择器(305)作为可能的输入数据。

[0108] 在本实施例中,第二存储器(303¾无法同时向运算单元(30¾提供两个不同的操 作数,因此一旦执行到需要从存储器获取两个不同的操作数的指令时,必须由第一存储器 (3012)和第二存储器(3032) —同提供操作数。这样减少了数据从第二存储器(3032)写回 第一存储器(3012)的机会,但简化了设计的复杂度,本实施例在单操作数指令出现频率较 高的情况下是有优势的。

[0109] 图4(f)与图4(e)在结构上基本类似,差别在于增加了一个较小的在功能上类似 旁路缓冲(look aside buffer)的第三存储器(320)。第三存储器也具有地址匹配功能,根 据本发明技术方案,在从第一存储器(301¾读取数据之前会先在第三存储器(320)中进行 寻址匹配,只有当第三存储器(320)中没有所需数据,才会从第一存储器(301¾读取。第 三存储器(320)的寻址地址同样由运算单元(30¾产生,接收来自第一存储器(301¾的输 出数据(310)作为自身的输入数据,并将输出数据(3081)送往与运算单元(302)连接的多 路选择器(306)作为可能的操作数。当运算单元(302)需要从第一存储器(3012)获得两 个操作数时,根据本发明技术方案,将其中一个操作数从第一存储器(301¾读出暂存到第 三存储器(320),下一周期由第一存储器(301¾和第三存储器(320) —同提供所需的两个 操作数。这种情况类似于处理器流水线等待一个周期。此外,第二存储器(303¾的输出数 据(318¾被分别送往与运算单元(30¾连接的多路选择器(306、307)作为可能的操作数, 并被送往与第一存储器(3012)连接的多路选择器(305)作为可能的输入数据。

[0110] 本实施例是对图4(e)实施例的一种改进。第三存储器(320)可以暂存第一存储 器(3012)的输出数据(310)。之后,当指令需要从第一存储器(3012)获取同样操作数时, 可以从第三存储器(320)输出该操作数,使第一存储器(301¾能有空闲写入来自第二存储 器(303¾的输出数据(3185),从而适应更广泛的程序。

[0111] 图4(g)与图4(d)在结构上基本类似,差别在于第一存储器(3012)的输出数据 (3101)除了被送往与运算单元(30¾连接的多路选择器(307)作为可能的操作数外,还与 从运算单元输出的执行结果(315¾ —同被送往与第二存储器(3031)连接的多路选择器 (3153),经选择后得到第二存储器(3031)的输入数据(3151)。[0112] 本实施例是对图4(d)和图4(f)实施例的一种改进。在本实施例中,第一存储器 (3012)中的数据能够不经过运算单元(30¾直接旁路写入第二存储器(3031),避免了对运 算单元(302)的占用,因此能更好地提高运算单元(302)的利用率。此外本实施例不需要 用到第三存储器,本质上是将第三存储器合并到第二存储器(3031)中,简化了设计并节省 了面积。

[0113] 图4(h)与图4(a)在结构上基本类似,差别在于第一存储器由两个大小不同的存 储器(321)和存储器(32¾构成,这两个存储器都只支持同时提供一个数据或接收一个数 据。存储器(321)的输出数据(308¾被送往与运算单元(30¾连接的多路选择器(306) 作为可能的操作数;存储器(322)的输出数据(310)被送往与运算单元(30¾连接的另一 个多路选择器(307)作为可能的另一个操作数。同时存储器(321)的输入数据来源除了从 外部存储器来的输入数据(31¾和第二存储器(303)的输出数据(318)外,还可以是存储 器(32¾的输出数据(3101),三者经多路选择器(3041)选择后得到实际写入存储器(321) 的输入数据(3091)。

[0114] 在本实施例中,存储器(321)和存储器(322)结构都比较简单,易于实现。存储器 (322)储存了图4(a)实施例中第一存储器(301)中的全部数据,存储器(321)通过从存储 器(32¾写入存储器(321)的方式储存了存储器(322)中当前使用率较高的一部分数据, 这样保证了运算单元(302)可以从不同的存储器中获取任意需要的操作数。在本实施例 中,所述当前使用率较高的一部分数据是当前基指针寄存器指向的数据段。此时,若要将数 据写入第一存储器,则必须对存储器(321)和存储器(32¾各自对应地址写入同样的数据, 若要读出数据,则可以根据需要从两个存储器中同时读出相同或不同的数据。

[0115] 图5是本发明所述处理器体系结构对应流水线划分的两种实施例。

[0116] 图5(a)中,流水线为5段流水线,分别是指令读取(I) (501)、指令译码(D) (502)、 数据读取(R) (503)、执行(E) (504)和数据写回(W) (505)。在本实施例中,零级存储器由 第一存储器和第二存储器构成,其中第一存储器采用与现有缓存类似的标志(tag)匹配结 构。

[0117] 在指令读取段(501),进行指令标志匹配(507),并同时读取指令,再根据指令标 志的匹配结果得到正确的指令。

[0118] 在指令译码段(502),在第二存储器中对需要读取的数据的地址信息进行读匹配 (512),同时将所述地址信息中的基地址和偏移地址相加以获得完整的数据地址(513)。

[0119] 在数据读取段(503),如果指令译码段(502)的地址信息匹配成功,则可以直接从 第二存储器中读取到所需的数据(514);如果匹配不成功,则用指令译码段(502)产生的完 整数据地址进行数据读标志匹配(515),并对第一存储器进行索引寻址以读取所需的数据 (516),再根据数据标志的匹配结果得到正确的数据。在本流水线段中,从第二存储器中读 取数据的操作(514)与数据读标志匹配(515)、从第一存储器中读取数据的操作(516)也可 以同时进行,在增加一些功耗的情况下提高一些性能。

[0120] 在执行段(504),除运算器执行指令定义的运算(517)外,第二存储器对执行结果 将被写入的地址进行写融合匹配(519),同时将执行结果地址信息中的基地址和偏移地址 相加以获得完整的数据地址(518)。

[0121] 在写回段(505),执行结果被写入第二存储器(520)。此后,当第一存储器用来接收第二存储器送来的数据的输入端口有空闲时,第二存储器将存储的数据依次经数据标志 匹配后写回第一存储器。

[0122] 根据本发明技术方案,也可以对所述流水线进行部分改进。可以在指令读取段 (501)之前进行指令标志匹配、在数据读取段(50¾前进行数据读标志匹配,从而在指令读 取段(501)和数据读取段(50¾有更充分的时间用于访问第一存储器。此外,也可以在指 令中不含有基指针寄存器号、第一存储器的容量足够容纳所有数据的情况下不进行数据标 志的匹配。

[0123] 图5(b)是将本发明技术方案应用于发明“一种低缺失率、低缺失惩罚的缓存方法 和装置”(中国专利申请号200910M7204. 4)的流水线实施例。本实施例的流水线与图5 (a) 中的流水线类似,也分为指令读取段(501)、指令译码段(521)、数据读取段(503)、执行段 (522)和数据写回段(505)。

[0124] 在指令读取段(501),从指令存储器读取指令。

[0125] 在指令译码段(521),在第二存储器中对需要读取的数据的地址信息进行读匹配, 同时用包含基地址和偏移地址的地址信息直接在第一存储器中进行读数据的寻址(523)。

[0126] 在数据读取段(503),如果指令译码段(521)的地址信息匹配成功,则可以直接从 第二存储器中读取到所需的数据;如果匹配不成功,则从第一存储器读取所需的数据。

[0127] 在执行段(52¾,除运算器执行指令定义的运算外,第二存储器对执行结果将被写 入的地址进行写融合匹配,同时用包含基地址和偏移地址的地址信息直接在第一存储器中 进行写数据的寻址(5M)。

[0128] 在写回段(505),执行结果被写入第二存储器。此后,当第一存储器用来接收第二 存储器送来的数据的输入端口有空闲时,第二存储器将存储的数据依次根据基地址和偏移 地址寻址写回第一存储器。

[0129] 本实施例与图5(a)实施例的差别在于由于采用了不同于传统缓存结构的第一存 储器,在指令译码段(521)和数据读取段(50¾不需要计算得到完整的地址,而是可以直接 在第一存储器中用包含基地址和偏移地址的地址信息进行寻址(523、5M),使设计更为简

单、高效。

[0130] 图6是本发明所述处理器体系结构指令集中指令格式的实施例。为了便于说明, 本实施例仅列举了两种指令格式,省略了其他几种可能格式。

[0131] 图6(a)是三操作数指令的格式。操作数一和操作数二为运算单元执行的输入,操 作数三为运算单元执行的结果。所述三操作数指令由指令码(601)、第一个基指针寄存器号 (602)、第一个偏移地址(603)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三 个基指针寄存器号(606)和第三个偏移地址(607)构成,其中基指针寄存器号(602)中对 应的基地址加上偏移地址(60¾可以得到操作数一的地址,基指针寄存器号(604)中对应 的基地址加上偏移地址(60¾可以得到操作数二的地址,基指针寄存器号(606)中对应的 基地址加上偏移地址(607)可以得到执行结果的地址。对于两操作数指令,也可以具有类 似的、但少一组基指针寄存器号和偏移地址的指令格式。

[0132] 图6(b)是立即数指令或条件转移指令的格式。在本实施例中,立即数指令的指 令格式与三操作数指令格式的差别在于前者只需要从存储器获取一个操作数并写入执行 结果,另一个操作数来源于指令中的立即数,因此立即数指令由立即数(608)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三个基指针寄存器号(606)和第三个偏移地 址(607)构成,操作数和执行结果地址的产生与图6(a)实施例相同。条件转移指令只需 要从存储器获取两个操作数,而不必有写回操作,因此指令格式也由立即数(即转移偏移 量)(608)、第二个基指针寄存器号(604)、第二个偏移地址(605)、第三个基指针寄存器号 (606)和第三个偏移地址(607)构成,操作数和执行结果地址的产生与图6(a)实施例相同。 对于无条件转移指令,可以有专门的指令格式,也可以将其视为条件转移指令的特例,即转 移条件始终成立的条件转移指令,在具体的指令格式上,可以对第二和第三个基指针寄存 器号给予同样的值,并对第二和第三个偏移地址给予同样的值。

[0133] 对于基地址装载指令,可以用一组基指针寄存器号及偏移地址对存储器寻址得到 的数据写入另一个基指针寄存器号对应的基指针寄存器中。根据本发明所述技术方案,还 可以有同时装载两组基地址的基地址装载指令,即在指令格式中包含四个基指针寄存器号 和两个偏移地址,同时用两组基指针寄存器号及偏移地址对存储器寻址得到两组数据写入 另外两个基指针寄存器号对应的基指针寄存器中,所述另外两个基指针寄存器号在指令中 的位置可以是图6(b)指令格式中的立即数(608)的位置。

[0134] 此外,所述指令格式中可以不明示基指针寄存器号,此时基地址是默认的。例如图 6(b)指令格式中第三个基指针寄存器号(606)和第三个偏移地址(607)的位置可以全部用 于构成更长长度的偏移地址。但此时基地址寄存器依然是存在并可以被基地址装载/存储 指令装载或读出,只是没有在指令中被明示。

[0135] 需要注意的是,本发明所述处理器体系结构指令集中的指令格式并不仅限于本实 施例中列举的指令格式,其他的指令格式也与此相似。

[0136] 图7是基于本发明所述处理器体系结构的处理器构成的串行连接多核结构的实 施例。处理器核(1101)由本地指令存储器(1103)、运算单元(1105)、数据地址产生模块 (1107)、程序计数器(1108)、输出缓冲(1110)以及零级存储器组成。所述零级存储器由第 一存储器(110¾和第二存储器(1109)组成。第一存储器(1104)是接在处理器核(1101) 后一级的处理器核对应的零级存储器的一部分。

[0137] 本地指令存储器(110¾存储有处理器核(1101)执行所需的指令。处理器核 (1101)中运算单元(1105)所需的操作数可以来自第一存储器(1102)、第二存储器(1109)、 第一存储器(1104),或来自指令中的立即数;执行结果写回第二存储器(1109)。

[0138] 在本实施例中,处理器核对应的第一存储器(110¾中的数据、第二存储器(1109) 中的数据(1115)、后一个处理器核对应的第一存储器(1104)中的数据和外部的共享存 储器中的数据(1111)通过多路选择器(1116、1117)选择后,作为操作数输入到运算单元 (1105)中。

[0139] 第二存储器(1109)接收的数据有三个来源:从运算单元(110¾来的数据、从第 一存储器(110¾来的数据、以及从外部的共享存储器来的数据(1111)。所述从运算单 元(110¾来的数据、从第一存储器(110¾来的数据、以及从外部的共享存储器来的数据 (1111)通过多路选择器(1112)选择后输入到第二存储器(1109)。

[0140] 在本实施例中,第一存储器只接收从前一处理器核中的第二存储器来的数据输 入。如第一存储器(1104)接收来自处理器核(1101)中第二存储器(1109)来的数据输入 (1118)。[0141] 第一存储器(110¾接收的地址也有三个来源:从前级处理器核第二存储器中地 址存储部分来的用于存储数据的地址、从前级处理器核数据地址产生模块来的用于读取数 据的地址、从本级处理器核数据地址产生模块(1107)来的用于读取数据的地址。上述地址 通过多路选择器选择后,输入到第一存储器(110¾中的地址接收模块。

[0142] 相应地,第一存储器(1104)接收的地址有三个来源:从前级处理器核第二存储 器(1109)中地址存储部分来的用于存储数据的地址、从前级处理器核数据地址产生模块 (1107)来的用于读取数据的地址、从本级处理器核数据地址产生模块来的用于读取数据的 地址(111¾。上述地址通过多路选择器(1114)选择后,输入到第一存储器(1104)中的地 址接收模块。

[0143] 根据本发明技术方案,在本实施例中,处理器核(1101)的前一级处理器核的执行 结果会被写入第一存储器(110¾ ;第一存储器(110¾能够直接向处理器核(1101)的运 算单元(110¾提供操作数,或直接将数据旁路到第二存储器(1109);运算单元(1105)的 执行结果可以被直接写入第二存储器(1109)。第二存储器(1109)能根据地址产生模块 (1107)产生的地址输出数据(1115)作为操作数供运算单元(1105)使用。本实施例实现的 是多个处理器核构成的串行连接多核结构,因此第二存储器(1109)并不需要将数据写回 处理器核(1101)对应的第一存储器(1102),而是将数据写入后一个处理器核对应的第一 存储器(1104),从而实现数据的传递。

Claims (18)

1. 一种处理器体系结构,其特征在于运算单元直接从存储器取得操作数、并将执行结 果写回存储器,此外还包含下列部分特征或全部特征:(1)没有寄存器堆(Register File);(2)没有将操作数从存储器装载(load)到寄存器堆的指令;(3)没有将执行结果从寄存器堆存储(store)到存储器中的指令;(4)对存储器的寻址方式包括立即数直接寻址、基地址加偏移量方式寻址。
2.根据权利要求1所述的处理器体系结构,其特征在于支持复数个流水线段同时对逻 辑意义上的同一个存储器进行取操作数或写回执行结果的访问,可以是同时进行单数个或 复数个数据的读取和写回。
3.根据权利要求1所述的处理器体系结构,其特征在于基于所述处理器体系结构构成 的处理器包含零级存储器;所述零级存储器具有同时支持读取至少两个数据并写回至少一 个数据的功能,可以由一个单独的多端口存储器构成,也可以由复数个单端口或多端口存 储器构成。
4.根据权利要求3所述的处理器体系结构,其特征在于当所述零级存储器由复数个单 端口或多端口存储器构成时,所述多端口存储器至少由一个具有单数个端口或复数个端口 的第一存储器和一个具有复数个端口的第二存储器构成。
5.根据权利要求3所述的处理器体系结构,其特征在于当所述零级存储器由复数个单 端口或多端口存储器构成时,所述多端口存储器还可以包括一个具有单数个端口或复数个 端口的第三存储器,用于暂存第一存储器的输出数据,以供运算单元获取操作数。
6.根据权利要求4所述的处理器体系结构,其特征在于所述第一存储器或第二存储器 可以由复数个大小相同或不同的存储器构成;当所述第一存储器由复数个不同大小的存储 器构成时,较小的存储器可以存有较大的存储器中的一部分数据。
7.根据权利要求4所述的处理器体系结构,其特征在于所述第二存储器具有以下特征:(1)用于存储操作数及所述操作数对应的地址信息;所述地址信息可以是地址值,也 可以是基地址值及偏移量;还可以是基指针寄存器号及偏移量;(2)所述用于存储操作数的操作数存储单元与用于存储操作数地址的地址信息存储单 元--对应;(3)具有读、写指针,可以按特定算法写入或读出操作数;(4)可以将单数个或复数个输入地址信息与存储的地址信息进行匹配,并输出匹配成 功的单数个或复数个对应操作数;所述输入地址信息可以是地址值,也可以是基地址值及 偏移量,还可以是基指针寄存器号及偏移量。
8.根据权利要求4所述的处理器体系结构,其特征在于所述第二存储器还可以具有写 融合(write merge)功能,即被写入的数据对应的地址信息在所述第二存储器中已存在,则 可以将所述写入的数据替换部分或全部已存在的数据。
9.根据权利要求1所述的处理器体系结构,其特征在于基于所述处理器体系结构构成 的处理器还可以包含基指针(BP,Base Pointer)寄存器,用于存储对零级存储器进行的以 基地址加偏移量方式寻址时的基地址。
10.根据权利要求3、9所述的处理器体系结构,其特征在于每个有效的基指针寄存器存储与所述零级存储器中的一部分数据存储单元对应的基地址;若所述第二存储器存储的 地址信息是基指针寄存器号及偏移量、且所述有效的基指针寄存器的内容被改写后,第二 存储器中对应于基指针寄存器原基地址的数据存储单元中的数据应被无效化;若所述数据 存储单元中的数据应该但还没有写回第一存储器时,则需要先将被更改过的数据写回第一 存储器后再被无效化。
11.根据权利要求9所述的处理器体系结构,其特征在于所述处理器体系结构的指令 中不同的操作数或执行结果可以共用同一组基指针寄存器,也可以具有各自独立或部分独 立的基指针寄存器;所述基指针寄存器可以全部用来存储基地址,也可以有单数个或复数 个基指针寄存器用于表示向所述基指针寄存器对应的存储空间不可写入。
12.根据权利要求3、9所述的处理器体系结构,其特征在于所述第二存储器中的一部 分可以作为执行结果的暂存空间,对所述暂存空间的内容不做写回第一存储器的操作;在 所述处理器体系结构中,还可以指定单数个或复数个基指针寄存器号,使所述基指针寄存 器对应第二存储器中的存储空间为暂存空间,对所述暂存空间的内容不做写回第一存储器 的操作;所述第二存储器中的暂存空间的内容只供运算单元执行后续指令时作为操作数使 用;所述处理器体系结构也可以具有用于暂存执行结果的计算/转移/状态寄存器;所述 计算/转移/状态寄存器中的内容只供执行后续指令时判断转移条件、读写处理器状态或 进行后续指令运算时作为操作数使用。
13.根据权利要求3所述的处理器体系结构,其特征在于还可以有基指针模式寄存器; 当基指针寄存器被分为复数组供不同的处理器线程使用时,所述基指针模式寄存器中的不 同值对应基指针寄存器的不同组别;所述基指针模式寄存器中每个模式代表一个线程。
14.根据权利要求13所述的处理器体系结构,其特征在于还可以有个数等于所述 处理器体系结构能支持的最大线程数的复数组处理器状态寄存器组(processor status registers),用于在线程切换时保存处理器状态,并提供与新线程配套的处理器状态;所述 基指针模式寄存器中的不同值对应不同的处理器状态寄存器组。
15.根据权利要求3、9所述的处理器体系结构,其特征在于所述处理器体系结构中的 全部指令可以都不包含存储数据的通用寄存器号,可以包含基指针寄存器号和偏移地址, 也可以只包含偏移地址。
16.根据权利要求1所述的处理器体系结构,其特征在于基于所述体系结构的处理器 可以构成前一个处理器核的执行结果直接作为输入送给后一个处理器核的串行连接多核 结构,所述串行连接多核结构中的每个处理器核分别执行完整程序的一部分,所有处理器 接力实现完整程序的功能;所述处理器核均没有寄存器堆,也没有将操作数从存储器装载 到寄存器堆或将执行结果从寄存器堆存储到存储器的指令。
17.根据权利要求1所述的处理器体系结构,其特征在于流水线段可以依次为:(1)指令读取段,从指令存储器读取指令;(2)指令译码段,指令译码,得到操作数地址信息;(3)数据读取段,根据指令里包含的操作数地址信息从零级存储器中读出单数个或复 数个操作数;(4)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的单数 个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;(5)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。
18.根据权利要求1所述的处理器体系结构,其特征在于流水线段还可以依次为:(1)指令读取段,从指令存储器读取指令;(2)译码取数段,指令译码,并根据指令里包含的操作数地址信息从零级存储器中读出 单数个或复数个操作数;(3)执行段,运算器执行指令定义的运算;操作数可以是从零级存储器中读出的单数 个或复数个操作数,或者是从指令译码得到的单数个或复数个立即数;(4)数据写回段,根据指令指定的地址信息将执行结果写入零级存储器。
CN 201010104030 2010-01-29 2010-01-29 一种处理器体系结构 CN102141905B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010104030 CN102141905B (zh) 2010-01-29 2010-01-29 一种处理器体系结构

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN 201010104030 CN102141905B (zh) 2010-01-29 2010-01-29 一种处理器体系结构
PCT/CN2011/070776 WO2011091768A1 (en) 2010-01-29 2011-01-28 Processor-cache system and method
EP20110736650 EP2529302A4 (en) 2010-01-29 2011-01-28 Processor-cache system and method
US13520572 US9047193B2 (en) 2010-01-29 2011-01-28 Processor-cache system and method
US14701526 US9262164B2 (en) 2010-01-29 2015-05-01 Processor-cache system and method

Publications (2)

Publication Number Publication Date
CN102141905A true true CN102141905A (zh) 2011-08-03
CN102141905B CN102141905B (zh) 2015-02-25

Family

ID=44318677

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010104030 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 (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810111A (zh) * 2012-11-08 2014-05-21 国际商业机器公司 有源存储器件中的地址生成的方法及其处理元件
CN105027212A (zh) * 2013-03-04 2015-11-04 美光科技公司 用于使用感测电路执行逻辑运算的设备及方法
CN105868126A (zh) * 2016-03-23 2016-08-17 中国电子科技集团公司第三十八研究所 种提高指令高速缓冲存储器命中率的装置及方法
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
CN107004433A (zh) * 2014-06-05 2017-08-01 美光科技公司 存储器中的比较操作
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9741427B2 (en) 2014-06-05 2017-08-22 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9779789B2 (en) 2014-09-03 2017-10-03 Micron Technology, Inc. Comparison operations in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for 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
US9799378B2 (en) 2013-07-26 2017-10-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9830955B2 (en) 2013-09-19 2017-11-28 Micron Technology, Inc. Data shifting
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum 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
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US9899068B2 (en) 2013-08-08 2018-02-20 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US10055196B2 (en) 2013-11-08 2018-08-21 Micron Technology, Inc. Division operations for memory
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
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
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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
EP0496439B1 (en) * 1991-01-15 1998-01-21 Philips Electronics N.V. Computer system with multi-buffer data cache and method therefor
DE69506623T2 (de) * 1994-06-03 1999-07-22 Motorola Inc Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
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
US6449693B1 (en) * 1999-04-05 2002-09-10 International Business Machines Corporation Method and apparatus for improving caching within a processor system
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
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
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

Cited By (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810111A (zh) * 2012-11-08 2014-05-21 国际商业机器公司 有源存储器件中的地址生成的方法及其处理元件
CN103810111B (zh) * 2012-11-08 2017-09-12 国际商业机器公司 有源存储器件中的地址生成的方法及其处理元件
US9892766B2 (en) 2013-03-04 2018-02-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
CN105027212A (zh) * 2013-03-04 2015-11-04 美光科技公司 用于使用感测电路执行逻辑运算的设备及方法
CN105027212B (zh) * 2013-03-04 2017-01-18 美光科技公司 用于使用感测电路执行逻辑运算的设备及方法
US9959913B2 (en) 2013-03-04 2018-05-01 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9799378B2 (en) 2013-07-26 2017-10-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US10056122B2 (en) 2013-07-26 2018-08-21 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US9899068B2 (en) 2013-08-08 2018-02-20 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10043556B2 (en) 2013-09-19 2018-08-07 Micron Technology, Inc. Data shifting
US9830955B2 (en) 2013-09-19 2017-11-28 Micron Technology, Inc. Data shifting
US10055196B2 (en) 2013-11-08 2018-08-21 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
CN107004433A (zh) * 2014-06-05 2017-08-01 美光科技公司 存储器中的比较操作
US9741427B2 (en) 2014-06-05 2017-08-22 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9711206B2 (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
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
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
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
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
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
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9940981B2 (en) 2014-09-03 2018-04-10 Micron Technology, Inc. Division operations in memory
US10032491B2 (en) 2014-09-03 2018-07-24 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap 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
US9940985B2 (en) 2014-09-03 2018-04-10 Micron Technology, Inc. Comparison operations in memory
US9779789B2 (en) 2014-09-03 2017-10-03 Micron Technology, Inc. Comparison operations in memory
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10074406B2 (en) 2014-10-29 2018-09-11 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
US10037786B2 (en) 2014-12-01 2018-07-31 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
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
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9928887B2 (en) 2015-03-11 2018-03-27 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
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9990966B2 (en) 2015-06-12 2018-06-05 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
US10026459B2 (en) 2016-02-12 2018-07-17 Micron Technology, Inc. Data gathering in memory
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
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US9947376B2 (en) 2016-03-01 2018-04-17 Micron Technology, Inc. Vertical bit vector shift in memory
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
CN105868126A (zh) * 2016-03-23 2016-08-17 中国电子科技集团公司第三十八研究所 种提高指令高速缓冲存储器命中率的装置及方法
CN105868126B (zh) * 2016-03-23 2018-09-18 中国电子科技集团公司第三十八研究所 一种提高指令高速缓冲存储器命中率的装置及方法
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9990967B2 (en) 2016-04-20 2018-06-05 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
US9899064B2 (en) 2016-05-18 2018-02-20 Micron Technology, Inc. Apparatuses and methods for shifting data
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9966116B2 (en) 2016-07-21 2018-05-08 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US9940990B1 (en) 2016-11-22 2018-04-10 Micron Technology, Inc. Data shift apparatuses and methods
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
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

Also Published As

Publication number Publication date Type
EP2529302A4 (en) 2016-03-02 application
US20150234660A1 (en) 2015-08-20 application
WO2011091768A1 (en) 2011-08-04 application
CN102141905B (zh) 2015-02-25 grant
EP2529302A1 (en) 2012-12-05 application
US20130111137A1 (en) 2013-05-02 application
US9047193B2 (en) 2015-06-02 grant
US9262164B2 (en) 2016-02-16 grant

Similar Documents

Publication Publication Date Title
US6728839B1 (en) Attribute based memory pre-fetching technique
US6665749B1 (en) Bus protocol for efficiently transferring vector data
US6631439B2 (en) VLIW computer processing architecture with on-chip dynamic RAM
US8200949B1 (en) Policy based allocation of register file cache to threads in multi-threaded processor
US6539467B1 (en) Microprocessor with non-aligned memory access
US6553486B1 (en) Context switching for vector transfer unit
US7284092B2 (en) Digital data processing apparatus having multi-level register file
US5051885A (en) Data processing system for concurrent dispatch of instructions to multiple functional units
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US6668316B1 (en) Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
US6343348B1 (en) Apparatus and method for optimizing die utilization and speed performance by register file splitting
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
US7020763B2 (en) Computer processing architecture having a scalable number of processing paths and pipelines
US20040015931A1 (en) Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture
US6718457B2 (en) Multiple-thread processor for threaded software applications
US5396604A (en) System and method for reducing the penalty associated with data cache misses
US20120246450A1 (en) Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US7315935B1 (en) Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US20030120901A1 (en) Multithreaded processor with efficient processing for convergence device applications
US20060179257A1 (en) Apparatus and method for providing multiple reads/writes using a 2read/2write register file array
US6615338B1 (en) Clustered architecture in a VLIW processor
US20090204800A1 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
C14 Grant of patent or utility model