CN106201914A - 一种基于指令和数据推送的处理器系统和方法 - Google Patents

一种基于指令和数据推送的处理器系统和方法 Download PDF

Info

Publication number
CN106201914A
CN106201914A CN201510267964.7A CN201510267964A CN106201914A CN 106201914 A CN106201914 A CN 106201914A CN 201510267964 A CN201510267964 A CN 201510267964A CN 106201914 A CN106201914 A CN 106201914A
Authority
CN
China
Prior art keywords
address
instruction
buffer
level
branch
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.)
Pending
Application number
CN201510267964.7A
Other languages
English (en)
Inventor
林正浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Original Assignee
Shanghai Xinhao Bravechips Micro Electronics Co Ltd
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
Application filed by Shanghai Xinhao Bravechips Micro Electronics Co Ltd filed Critical Shanghai Xinhao Bravechips Micro Electronics Co Ltd
Priority to US15/568,715 priority Critical patent/US20180088953A1/en
Priority to PCT/CN2016/080039 priority patent/WO2016169518A1/zh
Priority to TW105112791A priority patent/TW201638774A/zh
Publication of CN106201914A publication Critical patent/CN106201914A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本发明提供了一种处理器系统和方法,应用于处理器及计算机领域时,缓存系统可向处理器核主动推送指令和数据,避免处理器核向缓存器取指令及数据的延迟,提高处理器性能。

Description

一种基于指令和数据推送的处理器系统和方法
技术领域
本发明涉及计算机,通讯及集成电路领域。
背景技术
存储程序计算机中的中央处理器产生地址送到存储器,从中读取指令或数据送回供中央处理器执行,执行的结果送回存储器中存储。随着技术的进步,存储器的容量增大,其存储器访问延迟增大,存储器访问的通道延迟也增大;而中央处理器的执行速度却增快,因此存储器访问延迟日益成为计算机性能提高的瓶颈。因此,存储程序计算机使用缓存器以掩盖存储器访问延迟以缓解此一瓶颈。但中央处理器用同样的方式向缓存取指令或数据。即中央处理器中的处理器核产生地址送到缓存器,如地址与缓存器中存储的地址标签匹配,则缓存器将相应的信息直接送到处理器核供执行,如此避免了访问存储器的延迟。随着技术的进步,缓存器的容量增大,其缓存器访问延迟增大,访问的通道延迟也增大;而处理器核的执行速度却增快,因此缓存器访问延迟如今成为计算机性能提高的严重瓶颈。
上述处理器核向存储器取信息(包括指令和数据)供执行的方式可被视为处理器核向存储器拉取(Pull)信息。拉取信息需经历延迟通道两次,一次是处理器将地址送到存储器,一次是存储器将信息送到处理器核。此外,为支持拉取信息的方式,所有存储程序计算机的处理器都有产生和记录指令地址的模块,其流水线结构中必然有取指令的流水线段。现代存储程序计算机取指令通常需要复数个流水线段,加深了流水线,加重了分支预测错误时的损失。另外产生和记录一个长指令地址也需要消耗较多能量。尤其是将变长指令转换为定长微操作执行的计算机需要将定长微操作的地址逆向转换为变长指令的地址对缓存寻址,要有不少代价。
本发明提出的方法与系统装置能直接解决上述或其他的一个或多个困难。
发明内容
本发明提出了一种处理器系统,包括:推送缓存器和相应处理器核;其特征在于:所述处理器核不产生和保持指令地址,其流水线中也没有取指令的流水线段;所述处理器核仅向所述推送缓存器提供分支判断以及在执行间接分支指令时提供寄存器堆内存储的基地址;所述推送缓存器提取其存储的指令中的控制流信息并存储,根据所述控制流信息及所述分支判断向所述处理器核推送指令供其执行;所述推送缓存器在遇到间接分支指令时,基于来自所述处理器核的所述基地址向所述处理器核提供正确的间接分支目标指令供其执行。进一步地,所述推送缓存器可向所述处理器核提供分支指令的后续顺序及分支目标两支指令,由所述处理器核产生的分支判断选择执行其中一支指令,因此可以掩盖所述处理器核将所述分支判断传送到所述推送缓存器的延迟。进一步地,所述推送缓存器可以存储间接分支指令的基地址及相应的间接分支目标地址,可以减少或消除推送间接分支目标指令时的延迟,部分或全部掩盖所述处理器核将所述基地址送到所述推送缓存器的延迟。更进一步,推送缓存器可以基于其中存储的控制流信息提前向所述处理器核推送指令,部分或全部掩盖将信息从所述推送缓存器向处理器核传输的延迟。本发明提出的处理器系统的处理器核中不需要有取指令的流水线段,也不需要产生及记录指令地址。
本发明提出了一种复数层次缓存的组织形式,其最后(最低)层次缓存(LastLevel Cache,LLC)为路组相联组织,有虚实地址变换缓冲器TLB及标签单元TAG,可将存储器虚(virtual)地址经TLB变换为存储器实(physical)地址,所得的存储器实地址再与TAG中内容匹配得到LLC的缓存器地址。由于LLC缓存器地址由存储器实地址映射所得,因此LLC缓存器地址实际上是实地址。所得的LLC缓存器地址可用于寻址LLC的信息存储器RAM,也可用于选择LLC主动表。LLC主动表中存储了LLC缓存块与较高层缓存器中缓存块的映射关系,即LLC主动表由LLC缓存器地址寻址,而其表项内容是相应的较高层次缓存块地址。本发明中除LLC外其他层次的缓存器都是全相联组织,都以其本层次的缓存器地址直接寻址,不需要标签单元TAG或TLB。本层次的缓存器地址与较高层次缓存器地址通过主动表映射,所述主动表与LLC主动表相似,都是以本层次缓存器地址寻址而表项中存储较高层次缓存器地址。最高层次缓存器有相应的轨道表,其中存储由扫描器扫描、审查被存储进最高层次缓存器存储器RAM指令提取的控制流信息。轨道表由最高层次缓存器地址寻址,其表项中存储分支指令的分支目标地址。循迹器产生最高层次缓存器地址寻址最高层次缓存器存储器的第一读口输出顺序指令推送到处理器核;也以所述最高层次缓存器地址寻址轨道表中的对应表项读出相应分支目标地址,以所述分支目标地址寻址最高层次缓存器存储器的第二读口输出分支目标指令也推送到处理器核。处理器核执行分支指令产生分支判断,选择上述两支指令中的一支执行而放弃另一支。所述分支判断也控制所述循迹器相应地选择两支缓存器地址中的一支,寻址所述最高层次缓存器向处理器核持续推送指令。
本发明提出了一种根据缓存块之间关联度确定可被置换缓存块的缓存置换方法。所述轨道表中记录了从分支源分支跳转到分支目标的途径。本发明另以相关表记录了缓存块内容在低层次缓存器中的相应低层次缓存器地址,跳转入缓存块的分支源途径及跳转入缓存块的分支源的数目。可以根据缓存块中所述跳入的分支源的计数定义缓存块的关联度,计数越小关联度越小,可被预先置换。对同等最小关联度的各缓存块另外可再根据其上一次置换的先后,置换上一次最早置换的缓存块,以避免刚被置换过的缓存块又被置换。缓存块被置换时,以相关表中存储的跳入分支源途径寻址轨道表中表项,用相关表中缓存块内容的相应低层缓存器地址代替该缓存块地址以保持控制信息流的完整性。以上所述是以同一存储层次之间的关联度为依据进行置换。
在不同存储层次之间也可以应用最小关联度置换方法。其方法是记录与缓存块内容相同的高层次缓存块的数目作为关联度,计数越小关联度越小,置换关联度最小的缓存块。这种方法也可以被称为最少子孙法(Least Children),在此子孙指与缓存块内容相同的高层次缓存块。另外也要记录轨道表中以缓存块为分支目标的表项数目(缓存块与轨道表可以在不同存储层次)。当两个数目都为‘0’时,缓存块可被置换。若子孙计数不为‘0’,则将子孙缓存块置换后可置换本缓存块。若轨道表中以缓存块为分支目标的表项数目不为‘0’,则可以等其为‘0’时置换,或以含有本缓存块内容的低层次缓存器地址代替轨道表表项中的本缓存块地址后置换。存储层次间的最小关联度置换也可与前述最早被置换方法共用。
本发明提供了一种将循迹器及处理器核中的寄存器状态暂存到按线程号识别的存储器的方法。所述存储器与所述循迹器及处理器核中的寄存器状态可以按线程互换以切换线程。因为本发明的推送缓存中各线程指令是独立的,因此改变线程时不需清空缓存,不会发生一个线程执行了另一个线程的指令的情形。
本发明提供了一种包括处理器核和缓存器的处理器系统,所述缓存器向所述处理器核推送指令和数据供所述处理器核执行及处理。
可选的,所述处理器核向所述缓存系统提供分支判断;所述缓存器审查其中存储的指令,提取并存储指令的控制流信息;所述缓存器根据所述控制流信息及所述分支判断向所述处理器核推送指令供处理器核执行。
可选的,所述处理器核向所述缓存系统提供间接分支指令的基地址;所述缓存器根据所述基地址产生间接分支目标地址,向所述处理器核推送间接分支指令供处理器核执行。
可选的,所述处理器核流水线没有取指令流水线段;所述处理器核不产生指令地址;所述处理器核不向所述缓存器提供指令地址以读取指令。
可选的,该系统的缓存器连接至存储器;所述缓存器产生并向所述存储器提供存储器地址;所述存储器根据所述存储器地址向缓存器提供指令。
可选的,所述的缓存器中仅最低存储层次有虚实地址转换;所述的缓存器中仅最低存储层次有存储器地址对缓存器地址的映射。
可选的,所述的缓存器中最低存储层次以路组相联形式组织;所述的缓存器中除所述最低存储层次以外的其他存储层次为全相联形式组织。
可选的,所述的缓存器中的相邻存储层次之间各有扫描器,所述扫描器审查在所述相邻存储层次之间传递的指令以提取控制信息流。
可选的,所述的缓存器中在所述最低存储层次与次低存储层次之间有扫描器;所述扫描器审查在所述最低与次低存储层次之间传递的指令以提取控制信息流;存储所述提取的控制信息流以备比所述次低存储层次更高的存储层次调用。
可选的,所述的缓存器中最高存储层次有第一读口及第二读口;所述的缓存器中最高存储层次有第一循迹器及第二循迹器;所述的第一及第二循迹器根据所述存储的控制流信息及所述分支判断,控制所述的第一读口及第二读口向处理器核提供分支指令后的顺序指令及分支目标指令;所述的处理器核执行所述分支指令,产生分支判断;所述的处理器核以所述分支判断决定执行并写回顺序指令或分支目标指令。
可选的,所述的缓存器中存储所述间接分支指令的所述基地址与所述间接分支目标指令对;所述的缓存器可以根据所述间接分支指令及所述基地址向处理器核提供存储的所述间接分支目标指令。
本发明还提供了一种基于最少关联度原则的的缓存置换方法。
可选的,进一步以最早曾被置换的原则决定被置换的缓存块。
可选的,所述缓存器中的缓存块存有关联记录;所述关联记录中记录以该缓存块为分支目标的指令的数目作为所述关联度。
可选的,所述缓存器中的缓存块存有关联记录;所述关联记录中记录以与所述缓存块的部分或全部内容相同的更高层次缓存块的数目作为所述关联度。
可选的,所述缓存器中存有控制流信息,所述控制流信息中记录了分支目标地址;所述缓存器中的缓存块存有关联记录;所述关联记录中记录所述缓存块在低一存储层次中的地址;所述关联记录中记录以所述缓存块为分支目标的分支源缓存块的地址;在置换所述缓存块时,用所述缓存块的所述低一存储层次地址替换所述控制流信息中记录的所述缓存块的地址。
可选的,查询所述控制流信息以确定一个低存储层次缓存块中内容的相应高存储层次缓存块的地址;置换所述相应高存储层次缓存块以减低存储层次缓存块的关联度。
可选的,置换与其他缓存块没有关联的缓存块。
本发明还提供了一种信息处理方法,由所述缓存器向所述处理器核推送指令供处理器核执行。
可选的,所述方法包括:
步骤A:所述处理器核向所述缓存系统提供分支判断;
步骤B:所述缓存器审查其中存储的指令,提取并存储指令的控制流信息;
步骤C:所述缓存器根据所述控制流信息及所述分支判断向所述处理器核推送指令供所述处理器核执行。
可选的,所述处理器核向所述缓存系统提供间接分支指令的基地址;所述缓存器根据所述基地址产生间接分支目标地址,向所述处理器核推送间接分支指令供处理器核执行。
可选的,所述处理器核流水线没有取指令流水线段;所述处理器核不产生指令地址;所述处理器核不向所述缓存器提供指令地址以读取指令。
可选的,该系统的缓存器连接至存储器;所述缓存器产生并向所述存储器提供存储器地址;所述存储器根据所述存储器地址向缓存器提供指令。
可选的,所述的缓存器中仅最低存储层次有虚实地址转换;所述的缓存器中仅最低存储层次有存储器地址对缓存器地址的映射。
可选的,所述的缓存器中最低存储层次以路组相联形式组织;所述的缓存器中除所述最低存储层次以外的其他存储层次为全相联形式组织。
可选的,所述的缓存器中的相邻存储层次之间各有扫描器;所述扫描器审查在所述相邻存储层次之间传递的指令以提取控制信息流。
可选的,所述的缓存器中在所述最低存储层次与次低存储层次之间有扫描器;所述扫描器审查在所述最低与次低存储层次之间传递的指令以提取控制信息流;存储所述提取的控制信息流以备比所述次低存储层次更高的存储层次调用。
可选的,所述的缓存器中最高存储层次有第一读口及第二读口;所述的缓存器中最高存储层次有第一循迹器及第二循迹器;所述的第一及第二循迹器根据所述存储的控制流信息及所述分支判断,控制所述的第一读口及第二读口向处理器核提供分支指令后的顺序指令及分支目标指令;所述的处理器核执行所述分支指令,产生分支判断;所述的处理器核以所述分支判断决定执行并写回顺序指令或分支目标指令。
可选的,所述的缓存器中存储所述间接分支指令的所述基地址与所述间接分支目标指令对;所述的缓存器可以根据所述间接分支指令及所述基地址向处理器核提供存储的所述间接分支目标指令。
可选的,由循迹器提供缓存器地址寻址所述缓存器向所述处理器核推送指令;按线程存储所述循迹器中的及所述处理器核中的寄存器状态;按线程将所述存储的寄存器状态与所述循迹器及所述处理器核中的状态互换以进行线程切换。
可选的,所述缓存系统以主存储器为最低层次缓存;所述主存储器由缓存地址寻址。
可选的,所述缓存由实地址寻址;所述缓存系统不进行虚实地址转换。
可选的,所述主存储器由非易失性存储器与易失性存储器共同组成;所述易失性存储器作为非易失性存储器的缓存。
可选的,所述缓存器中各存储层次中的存储块以树状组织;所述不同存储层次中的所述存储块以映射关系相联系。
可选的,所述映射关系可以是从低存储层次向高存储层次映射的正向映射;所述映射关系可以是从高存储层次向低存储层次映射的逆向映射。
可选的,将一个所述缓存块的高层地址逆向映射成低层缓存地址;将所述低层缓存地址与目标偏移量相加获得下一数据装载的低层缓存地址;将所述目标低层缓存地址正向映射为下一数据装载高层缓存地址。
可选的,以所述下一数据装载高层缓存地址在所述处理器请求之前从缓存中取得数据;所述数据随相应数据访问指令向所述处理器推送。
可选的,所述目标偏移量由相关指令之后的反向跳转的分支指令的分支判断结果选择。
有益效果
本发明所述系统和方法可以为处理器系统中处理器核访问缓存器的双向延迟提供提供基本的解决方案。在传统处理器器统中,处理器核向缓存器发送存储器地址,缓存器根据所述存储器地址向处理器核发送信息(指令或数据)。本发明所述的利用指令间的相关性的系统和方法,则由缓存器向处理器核推送指令,避免了处理器核向缓存器发送存储器地址的延迟。此外,本发明所述的推送缓存器不在处理器核的流水线结构中,因此可以提前推送指令以掩盖缓存器至处理器核的延迟。
本发明所述系统和方法还提供了一种多层缓存组织形式,其虚实地址转换及地址映射仅在最低层次缓存(LLC)进行,而非传统缓存中虚实地址转换在最高层次缓存进行,以及地址映射在每一层次缓存进行。所述多层缓存组织形式中各层次缓存都可以由基于由存储器实地址映射所的的缓存器地址寻址,使得全相联的缓存其成本及功耗都近似于直接映射缓存。
本发明所述系统和方法还提供了一种基于缓存块间关联度的缓存置换方法,适用于利用指令间关系(控制信息流)的缓存器。
对于本领域专业人士而言,本发明的其他优点和应用是显见的。
附图说明
图1是本发明所述基于轨道表的缓存系统的实施例;
图2是本发明所述处理器系统的一个实施例;
图3是本发明所述处理器系统的另一个实施例;
图4是本发明所述处理器系统的另一个实施例;
图5是本发明所述处理器系统的另一个实施例;
图6是图5实施例中处理器系统的地址格式;
图7是图5实施例中处理器系统的部分存储表格式;
图8是本发明所述处理器系统的另一个实施例;
图9是本发明所述处理器系统的间接分支目标地址产生器的一个实施例;
图10是本发明所述处理器系统中处理器核的流水线结构示意图;
图11是本发明所述处理器系统的另一个实施例;
图12是本发明所述处理器/存储器系统的一个实施例;
图13是本发明所述处理器/存储器系统的另一个实施例;
图14是为图13实施例中各存储表的格式;
图15是本发明图13实施例中处理器系统的地址格式;
图16是本发明所述数据轨道表,数据主动表,数据相关表的格式;
图17是本发明所述步长表格式及工作原理;
图18是本发明所述处理器/存储器系统的另一个实施例;
图19是本发明图18实施例中数据缓存层次结构的作用机制示意图;
图20是本发明18实施例中数据缓存层次结构的改进实施例。
具体实施方式
以下结合附图和具体实施例对本发明提出的高性能缓存系统和方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
需要说明的是,为了清楚地说明本发明的内容,本发明特举多个实施例以进一步阐释本发明的不同实现方式,其中,该多个实施例是列举式并非穷举式。此外,为了说明的简洁,前实施例中已提及的内容往往在后实施例中予以省略,因此,后实施例中未提及的内容可相应参考前实施例。
虽然该发明可以以多种形式的修改和替换来扩展,说明书中也列出了一些具体的实施图例并进行详细阐述。应当理解的是,发明者的出发点不是将该发明限于所阐述的特定实施例,正相反,发明者的出发点在于保护所有基于由本权利声明定义的精神或范围内进行的改进、等效转换和修改。同样的元器件号码可能被用于所有附图以代表相同的或类似的部分。
此外,在本说明书中对部分实施例进行了一定的简化,目的是为了能更清楚地表达本发明技术方案。应当理解的是,在本发明技术方案的框架下改变这些实施例的结构、时延、时钟周期差异和内部连接方式,都应属于本发明所附权利要求的保护范围。
可以用一种称为轨道表的数据结构改进处理器系统中的缓存器。轨道表中不但存储有分支指令的分支目标指令信息,及顺序执行的指令信息。图1给出了本发明所述包含轨道表的缓存系统的例子。其中10为本发明所述轨道表的一个实施例。轨道表10由与一级缓冲器24同样数目的行和列构成,其中每一行就是一条轨道,对应一级缓存中的一个一级缓存块,轨道上的每个表项对应一级缓存块中的一条指令。在本例中假设一级缓存中的每个一级缓存块最多包含4个指令,其块内偏移地址BNY分别为0、1、2、3。下面以一级缓存22中的5个指令块,其一级缓存器块地址BN1X分别为‘J’、‘K’、‘L’、‘M’、‘N’,为例进行说明。因此轨道表10中有相应的5条轨道,每条轨道中最多可存放4个表项与24中一级缓存块中最多4条指令对应,也由BNY对轨道中的表项寻址。在本例中,可以通过由一级缓存器块地址BN1X和块内偏移地址BNY构成的一级缓存器地址地址BN1对轨道表10及相应一级缓存器24寻址,读出轨道表表项以及对应的指令。图1中域11,12,13为轨道表10的表项格式。轨道表的表项格式中有专门的域存储程序流控制信息。其中域11为指令类型格式,按对应的指令的类型可以分为非分支指令及分支指令两大类。其中分支指令的类型可以进一步按照一个维度细分为直接与间接分支,也可以按照另一个维度细分为条件分支及无条件分支。域12中存储的是缓存器块地址,域13中存储的是存储器块内偏移地址。图1中以域12中为一级缓存器BN1X格式,域13中为BNY格式说明。缓存器地址还可以使用其他格式,此时域11中可增设地址格式信息以说明域12,13中的地址格式。非分支指令的轨道表表项中只有一个存储了非分支类型的指令类型域11,而分支指令的表项除指令类型域11外,还有BNX域12及BNY域13。
图1的轨道表10中只显示域12与13。例如,表项‘M2’中的值‘J3’表示‘M2’表项所对应的指令的其分支目标指令一级缓存地址为‘J3’。这样,当根据轨道表地址(即一级缓存器地址)读出轨道表10中‘M2’表项时,即可根据表项中域11判断其相应指令为分支指令,根据域12,13得知该指令的分支目标为一级缓存器中‘J3’地址的指令。寻址找到的一级缓存24中的‘J’指令块中BNY为‘3’的指令就是所述分支目标指令。此外,在轨道表10中除了上述BNY为‘0’~‘3’的列外,还包含一个额外的结束列16,其中每个结束表项只有域11及12,其中域11存储了一个无条件分支的类型,域12中存储了相应行对应的指令块的顺序地址下一指令块的BN1X,即可以根据该BN1X直接在一级缓存中找到所述下一指令块,并在轨道表10中找到该下一指令块对应的轨道。
轨道表10中空白的表项显示对应非分支指令,其余的表项对应分支指令,这些表项中还显示了其对应的分支指令的分支目标(指令)的一级缓存地址(BN1)。对于轨道上的非分支指令表项,其下一条要执行的指令只可能是由该表项同一轨道上右方的表项所代表的指令;对于轨道中的最后一个表项,其下一条要执行的指令只可能是由该轨道上结束表项的内容所指向的一级缓存块中的第一条有效指令;对于轨道上的分支指令表项,其下一条要执行的指令可以是该表项右方的表项所代表的指令,也可以是其表项中的BN指向的指令,由分支判断选择。因此,轨道表10中含有一级缓存中所存储的全部指令的所有程序控制流信息。
请参考图2,其为是本发明所述处理器系统的一个实施例。在本例中包含一级缓存22,处理器核23,控制器27,如图1中轨道表10一样的轨道表20。增量器(Incrementor)24,选择器25及寄存器26组成一个循迹器47(虚线内)。处理器核23以分支判断31控制循迹器中选择器25,以流水线停止信号32控制循迹器中寄存器26。选择器25受控制器27和分支判断31的控制选择轨道表20的输出29或增量器24的输出。选择器25的输出被寄存器26寄存,而寄存器26的输出28称为读指针(Read Pointer,RPT),其指令格式为BN1。请注意增量器24的数据宽度等于BNY的宽度,只对读指针中的BNY增‘1’,而不影响其中BN1X的值,如增量结果溢出BNY的宽度(即一级缓存块的容量,比如当增量器24的进位输出为‘1’时),系统会查找结束列中的顺序下个一级缓存块的BN1X以替代本块BN1X;以下实施例均如此,不另做说明。本说明书中的循迹器中的系统以读指针28访问(access)轨道表20经总线29输出表项,也访问一级缓存22读出相应指令供处理器核23执行。控制器27对总线29上输出的表项中域11译码。如果域11中的指令类型为非分支,则控制器27控制选择器25选择增量器24的输出,则下一时钟周期读指针增‘1’,从一级缓存22读取顺序下条(Fall Through)指令。如果域11中的指令类型为无条件直接分支,则控制器27控制选择器25选择总线29上的域12,13,下一周期读指针28指向分支目标,从一级缓存22读取分支目标指令。如果域11中的指令类型为直接条件分支,则控制器27让分支判断31控制选择器25,如判断为不执行分支,则下周读指针28由增量器24增‘1’,从一级缓存22中读取顺序指令;如判断为执行分支,则下周读指针指向分支目标,从一级缓存22中读取分支目标指令。当处理器核23中流水线停顿时,通过流水线停顿信号32暂停循迹器中寄存器26的更新,使缓存系统停止向处理器核23提供新的指令。
回到图1,轨道表10中的非分支表项可被抛弃,以压缩轨道表。压缩轨道表的表项格式除原有的域11,12,13外还增添了源(Source)BNY(SBNY)域15以记录分支指令本身的(源)块内偏移地址,因为压缩后表项在表中有水平位移,虽然还保持各分支表项之间的顺序,但已不复能以BNY直接寻址。压缩轨道表14以压缩表项格式存储了轨道表10中同样的控制流信息。轨道表14中只显示了SBNY域15,BNX域12,与BNY域13。如K行中表项‘1N2’表示该表项代表地址为K1的指令,其分支目标为N2。结束表项16在轨道表14中最右面的一列,通过独立的读口30输出。当读指针28对轨道表14寻址时,用其中的BN1X读出该行对应的所有表项中的SBNY 15的值,并将每个所述SBNY值送到该列对应的比较器(如比较器18等)与该读指针中的BNY部分17分别比较。这些比较器,若本列的SBNY值小于所述BNY,则输出‘0’,否则输出‘1’。对这些比较器的输出进行检测,按从左到右的顺序找到第一个‘1’,以其控制选择器19经总线29输出该‘1’对应列由BN1X选择的行中的表项内容。例如,当读指针28上的地址为‘M0’、‘M1’或‘M2’时,从左到右三个比较器18等的输出都为‘011’,因此经总线29输出的第一个‘1’对应的表项内容均为‘2J3’。当图2实施例使用14格式的压缩轨道表作为其轨道表20时,控制器27将读指针28上的BNY与轨道表输出总线29上的SBNY做比较。如BNY小于SBNY,则读指针28访问的轨道表表项对应的指令尚在同一读指针28访问的指令之后,此时系统可以继续步进。如BNY等于SBNY,则读指针28访问的轨道表表项正对应访问的指令,此时控制器27可以按照29上的域11中的分支类型控制选择器25执行分支操作。以上图1及图2实施例中缓存系统都以每个时钟周期提供一条指令为例,以便于说明。
请参考图3,其为本发明所述处理器系统的另一个实施例。其中20为一级缓存的轨道表,22为一级缓存器的存储器RAM,39为指令读缓冲器(IRB,Instruction Read Buffer),47为循迹器,91为寄存器,92为选择器,23是处理器核。指令读缓冲IRB 39可存放一个一级指令缓存块的一部分或单数个或复数个一级指令缓存块,由循迹器47的读指针28寻址。读指针28也对轨道表20寻址。轨道表输出的分支目标地址经总线29对一级缓存22寻址,也经总线29送到循迹器47。IRB 39与一级缓存器存储器22共同构成一个双读口的存储器,IRB 39提供第一读口,存储器22提供第二读口,而寄存器91暂存第二读口输出的数据。IRB 39的输出及一级缓存器22的输出由处理器核23输出的分支判断31控制选择器92选择,选择器92输出的指令送到处理器核23中执行。
以下结合图1中轨道表14中的内容说明图3实施例中处理器系统的操作。14中结束列16中各表项均为无条件直接分支类型。为便于说明,在本公开的所有实施例中,均假设14中的其他表项为直接条件分支类型。开始时读指针28指向地址‘L0’,从IRB 39中读出相应指令,分支判断31的默认值控制选择器92选择来自IRB 39的该指令供处理器核23执行。与此同时读指针28上的地址‘L0’寻址轨道表14,从总线29输出表项‘0M1’;以29上的地址‘M1’访问一级缓存器22,读出相应分支目标指令存入寄存器91。此时控制器27比较总线29上的SBNY域15及读指针28上的BNY域13,发现二者相等,因此由分支判断31控制选择器92。假设此时31为‘不分支’,则31控制选择器92在下一时钟周期选择IRB 39的输出。下一时钟周期,读指针28步进指向地址‘L1’,从IRB 39中读出相应指令,经选择器92选择供处理器23执行。与此同时读指针28上的地址‘L1’寻址轨道表14,从总线29输出表项‘3J0’;以29上的地址‘J0’访问一级缓存器22,读出相应指令作为分支目标指令存入寄存器91。此时控制器27比较总线29上的SBNY域15及读指针28上的BNY域13,发现二者不相等,因此按默认值控制选择器92选择IRB 39的输出供处理器核23执行。下一时钟周期,读指针28步进指向地址‘L2’,此时控制器27发现总线29上的SBNY域15及读指针28上的BNY域13仍不相等,因此27仍控制选择器92选择IRB 39的输出供处理器核23执行。下一时钟周期,读指针28步进指向地址‘L3’,此时控制器27发现总线29上的SBNY域15及读指针28上的BNY域13相等,因此由分支判断31控制选择器92。假设此时31为‘分支’,控制选择器92选择寄存器91的输出,即地址为‘J0’的分支目标指令,供处理器23执行。与此同时,分支判断31也控制循迹器47选择总线29上的‘J0’放上读指针28,控制将‘J’一级缓存块存入IRB 39。下一周期,读指针28步进指向‘J1’,控制IRB 39输出相应指令经选择器92选择供处理器核23执行。
请参考图4,其为本发明所述处理器系统的另一个实施例。其中40为二级主动表(Active List 2,AL2),41为二级缓存的地址转换缓存器TLB及标签单元TAG,42为二级缓存的存储器RAM,43为扫描器,44为选择器,20为一级缓存的轨道表,37为一级缓存的相关表,22为一级缓存器的存储器RAM,27为控制器,33为选择器,39为指令读缓冲器IRB。增量器24,选择器25,与寄存器26共同构成循迹器47,增量器34,选择器35,与寄存器36共同构成循迹器48,23则是处理器核,该核可接收两支指令而在分支判断控制下选择一支执行完成而放弃执行另一支,而45则是暂存处理器各线程状态的寄存器。
扫描器43审查从二级缓存存储器42存到一级缓存器存储器22的指令块,计算其中的直接分支指令的分支目标地址,其方法是在分支指令本身的存储器地址上加上分支指令中的分支偏移量。计算所得的分支目标地址经选择器44选择后被送到TLB/标签单元41匹配。用匹配所得的二级缓存器地址BN2访问二级主动表40。若该二级缓存器地址对应的指令已被存入一级缓存存储器22,则40中对应表项有效,此时即将该表项中的BN1X块地址与扫描器43产生的该分支指令的类型及块内偏移量BNY合并成一个轨道表表项。若该二级缓存地址对应的指令尚未被存入一级缓存存储器22,则40中对应表项无效,此时即将上述匹配所得的二级缓存地址BN2(含块内偏移量BNY)与扫描器43产生的该分支指令的类型合并成一个轨道表表项。如此产生的一个指令块中的各相应轨道表表项按指令顺序写入轨道表20中与存储器22中上述指令块对应的一条轨道,即完成了该指令块中含有的程序流的提取与存储。
循迹器47产生的读指针28寻址轨道表20读出表项经总线29输出。控制器27译码输出表项中的分支类型及地址格式。如输出的表项中的分支类型为直接分支,而缓存器地址为BN2格式,则控制器27以该BN2地址寻址二级主动表40。若40中表项有效,即将该表项中BN1X填入轨道表20中替代上述表项中BN2X,使其成为BN1格式;若40中表项无效,以该BN2地址寻址二级缓存器存储器42,读出指令块填入一级缓存器存储器22中由一级缓存器置换逻辑所提供的一个一级缓存块,并将该一级缓存块的块号BN1X填入40中上述无效表项并将该表项置为有效,并如上将该BN1X填入轨道表中表项,将该表项中BN2地址替换为BN1地址。上述写入轨道表20的BN1地址可被旁路到总线29上送往循迹器47备用。如经总线29输出的分支类型为直接分支,而缓存器地址为BN1格式,则控制器27使其直接送往循迹器47备用。
如经总线29输出的分支类型为间接分支,则控制器27控制循迹器等待处理器核23计算间接分支目标地址经总线46,选择器44送到二级缓存TLB/标签单元41匹配,以匹配所得的二级缓存地址BN2访问二级主动表40,如40中相应表项无效则以该BN2地址如上寻址二级缓存存储器42读取指令块填入一级缓存存储器22的一个一级缓存块中,将获得的BN1地址旁路到循迹器47备用。相关表(Correration Table,也可以称为关联表)37是一级缓存器22的置换逻辑的组成部分,其结构及功能将在图7实施例中描述。
处理器核23中分支判断流水线段之前的流水线有两支,其中一支接收来自指令读缓冲IRB 39的顺序指令,该支被命名为FT(Fall-through)支;另一支接收来自一级缓存器存储器22的分支目标指令,该支被命名为TG(Target)支。该两支含有的前端流水线段数由处理器的流水线结构决定,本实施例中以该两支中各含有两个前端流水线段为例说明。处理器核23中的分支判断流水线段执行分支指令,根据产生的分支判断31选择两支指令中的一支完成执行,而放弃执行另一支。在本实施例中以IRB 39可以存储两个指令块为例,指令读缓冲IRB39由循迹器48的IPT读指针38寻址。一级指令缓存器22,相关表37及轨道表20由循迹器47的RPT读指针28寻址。
当处理器核23没有对分支产生判断时,分支判断31的默认值为‘0’,即不分支,处理器核23选择执行FT支的指令;当处理器核23对分支产生判断时,如判断为‘不分支’则分支判断31的值为‘0’,此时处理器核23选择执行FT支的指令;如判断为‘分支’则分支判断31的值为‘1’,此时处理器核23选择执行TG支的指令。选择器33,25,35都可受分支判断31的控制,当31为‘0’时,上述三个选择器都选择右边的输入;当31为‘1’时,上述三个选择器都选择左边的输入。此外在处理器核23没有对分支产生判断时,选择器33与25还受控制器27的控制。以下结合图1中轨道表14的内容说明图4实施例中处理器系统的操作。开始时M指令块已在指令读缓冲IRB 39中,分支判断31为‘1’,选择器25及35均选择左边的输入,IPT读指针38及PT读指针28都指向地址M1。此时IPT 38中指向的IRB 39中M1指令被送入处理器核中的FT支前端流水线;与此同时,RPT 28指向轨道表20,从独立的读口30读出其中M行的结束表项16的值‘N’,以寻址一级缓存器22输出N指令块存入IRB39。再经总线29输出轨道表14中M行与BNY地址‘1’匹配的表项2J3。此时指令分支判断31为默认值‘0’,选择器35选择增量器34的输入,IPT指针38步进,控制IRB 39输出M2,M3,N0指令送到处理器核23的FT支前端流水线。控制器27比较总线29上15域SBNY上的值‘2’与RPT 28上的13域BNY的值‘1’,在他们不相等时控制选择器25选择增量器24的输出,使RPT28步进,指向M2,此时总线19上SBNY与RPT读指针28上BNY相等,译码器27控制选择器33及选择器25选择右边的输入,即总线29上BN1地址J3存入寄存器26。此后,控制器27控制RPT读指针28从一级缓存22中读出J3,K0指令送到处理器核23的TG支前端流水线。
M2是分支指令,当其到达处理器核23中进行分支判断的流水线段时,该流水线段执行M2指令,产生分支判断。如分支判断‘31’为‘0’,则处理器核23选择FT支中的M3,N0指令继续执行,而放弃执行TG支中的J3,K0指令。此时分支判断31控制选择器25及35选择增量器34的输出存入寄存器26及36,使RPT 28及IPT 38均指向N1,IPT 38控制IRB 39输出N1及后续指令到处理器核23的FT支供持续执行。此时RPT 28指向轨道表中N行,读出N行的结束表项,将其送到一级缓存器22读取N指令块的顺序下一指令块存入IRB 39。如分支判断‘31’为‘1’,则处理器核选择TG支中的J3,K0指令继续执行,而放弃执行FG支中的M3,N0指令。此时分支判断31控制将一级缓存22输出的K行指令存入IRB 39,并控制选择器25及35选择增量器24的输出存入寄存器26及36,使RPT 28及IPT 38均指向K1,IPT 38控制IRB 39输出K1及后续指令到处理器核23的FT支供持续执行。RPT 28指向K行,K行的结束表项中L被送到一级缓存器22读出L行,存入IRB 39。如此,则处理器23可以不间断地执行指令,没有因分支导致的流水线停顿。
轨道表中不同线程对应的轨道之间是正交(orthogonal)的,因此可以共存,相互之间不会影响。图4中处理器核产生的间接分支地址46是虚拟地址,与线程号拼合后经选择器44选择,其中索引地址被同时送到41中的TLB及二级标签单元,而其中虚拟标签部分连同线程号被送到TLB中映射为物理标签,该物理标签与二级标签单元中由索引地址读出的各路的标签匹配,匹配所获得的路号(Wey number)与虚拟地址中的索引号(Index)拼合,即二级缓存块地址,因此二级缓存地址BN2及由其映射得到的一级缓存地址BN1实际上是由物理地址映射而得而非由虚拟地址映射而得。因此处理器中虚拟地址相同的两个不同线程,其缓存器地址BN实际上是不同的,避免了不同线程不同程序的相同虚拟地址寻址相同缓存地址(address aliasing)的问题。另一方面,不同线程的相同程序的相同虚拟地址,因为会映射到相同的物理地址,其映射所得的缓存器地址也是相同的,避免了相同程序在缓存器中的重复(duplication)问题。基于缓存地址的这种特性,可实现多线程操作。图4中45是寄存器组,其中按线程存放线程号及处理器中的状态寄存器,例如图4中循迹器47中寄存器26及循迹器48中寄存器36中的内容,以及处理器核23中该线程各寄存器的值。45由线程号49寻址。当处理器要切换线程时,将循迹器47,48中寄存器26及寄存器36中的值,以及处理器核23中寄存器的值都读出,存入45中由此时总线49上的换出线程号指向的表项。然后由总线49向45传送换入线程号,将该线程号指向的表项中的内容换入寄存器26,36及处理器核23中的寄存器,之后在IRB 39中填入IPT 38指向的指令块及其顺序下个指令块,即可开始对换入线程的操作。轨道表20中及缓存器42及22中各线程的指令是正交的,不会出现一个线程误执行另一个线程的指令的现象。
请参考图5,其为本发明所述处理器系统的另一个实施例。其中二级主动表40,二级缓存的存储器RAM 42,二级扫描器43,轨道表20,一级缓存的相关表37,一级缓存器的存储器RAM 22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图4实施例中相同号码的模块功能相同;虽然控制器27,选择器33在图5中为使图易读而省略,但在二级缓存以下的操作与图4实施例相同。图5中增添了三级缓存,由三级主动表50,三级缓存的TLB及标签单元TAG51及三级缓存器存储器52,三级扫描器53及选择器54组成,代替了图4中二级缓存的TLB及标签单元41,及选择器44。图5实施例中最后级缓存(last levelcache),三级缓存器52以路组方式组织,二级缓存器42及一级缓存器22均为全相连方式组织。其中二级缓存器42中每个二级缓存块内含有4个一级缓存块,三级缓存器52中每一路中的三级缓存块又含有4个二级缓存块。
请参考图6,其为图5实施例中处理器系统的地址格式。存储器地址被划分的标签(Tag)61,索引(Index)62,二级子地址(L2 sub_address)63,一级子地址(L1 sub_address)64,与块内偏移量(BNY)13。三级缓存器的地址BN3由路号65及索引62,二级子地址63,一级子地址64,与块内偏移量(BNY)13组成;其中路号65与索引62拼合即三级缓存块地址;65,62,63拼合寻址三级缓存块中的一个二级指令块;而除块内偏移量13的各项合称为BN3X,寻址三级缓存块中的一个一级指令块。二级缓存器的地址BN2由二级缓存块号67及一级子地址64,与块内偏移量(BNY)13组成;其中二级缓存块号67寻址一个二级缓存块;除块内偏移量13的各项合称为BN2X,寻址二级缓存块中的一个一级指令块。一级缓存器的地址BN1由一级缓存块号68(BN1X)与块内偏移量(BNY)13组成。上述4种地址格式中的块内偏移量(BNY)13是一样的,进行地址转换时该BNY部分不变化。BN2地址格式中二级块号67指向一个二级缓存块,一级子地址64指向二级缓存块中4个一级指令块中的一个。同理,BN3地址格式中路号65及索引62指向一个三级缓存块,二级子地址63指向其中4个二级指令块中的一个,一级子地址64指向选中的二级指令块中4个一级指令块中的一个。
请参考图7,其为图5实施例中处理器系统的部分存储表格式。以下结合图5,图6及图7说明。图5里51中标签单元的格式为物理标签86。51中TLB的CAM格式是线程号83以及虚拟标签84,RAM格式是物理标签85。选择器54选择输出的线程号83及虚拟标签84在TLB中被映射为物理标签85;虚拟地址中的索引地址62读出标签单元中的物理标签86与85匹配以获得路号65。路号65以及虚拟地址中的索引地址62拼合形成三级缓存块地址。
图5中AL3三级主动表50按多路组相联方式组织,每一路中有与L3缓存器52及51中标签单元同样数目的行,同样由索引地址62寻址。每一行中有计数域79及4个BN2X域80,同一行中的复数个80由二级子地址63寻址。每个80域各有其相应有效位81。各路的同一行分享一个三级指针82。AL2二级主动表40按全相联方式组织,有与L2缓存器42同样数目的行,由二级块地址67寻址。每一行中有计数域75及4个BN1X域76,76由一级子地址64寻址。每个76域各有其相应有效位77。各行分享一个二级指针78。CT相关表37按全相联方式组织,有与L1缓存器22同样数目的行,由一级块地址68寻址。每一行中有计数域70,BN2X域71及若干个BN1X域72。每个72域各有其相应有效位77。各行分享一个一级指针74。
当三级缓存器52中一个三级缓存块中的一个二级指令块被存储到二级缓存器42中的一个二级缓存块中,该42中二级缓存块的块号被存储进该三级缓存块在三级主动表50中对应的行中由二级子地址63寻址的表项80,其相应有效位81也被设为‘1’(有效)。该二级缓存块中指令由三级扫描器53译码,其中分支指令中的分支偏移量与该指令的地址相加得到分支目标地址。该二级缓存块中的顺序下个二级缓存块的地址也由本二级缓存块的存储器地址加上一个二级缓存块的大小求得。分支目标地址或顺序下个二级缓存块地址经选择器54选择送到51中的标签单元匹配,如不匹配,则该地址被送到更低层存储器读取指令存入三级缓存存储器52。如此可以保证在二级缓存存储器42中的指令,其分支目标及顺序下个二级缓存块至少已在三级缓存存储器52中或正在存储进52的过程中。
当二级缓存器42中一个二级缓存块中的一个一级指令块被存储到一级缓存器22中的一个一级缓存块中,该22中一级缓存块的块号被存储进该二级缓存块在二级主动表40中对应的行中由一级子地址64寻址的表项76,其相应有效位77也被设为‘1’(有效)。该一级缓存块中指令由二级扫描器43译码,其中分支指令中的分支偏移量与该指令的地址相加得到分支目标地址。该一级缓存块中的顺序下个一级缓存块的地址也由本一级缓存块的存储器地址加上一个一级缓存块的大小求得。分支目标地址或顺序下个一级缓存块地址经选择器54选择送到标签单元51匹配,如不匹配,则该地址被送到更低层存储器读取指令存入三级缓存存储器52;如匹配,则以匹配所得的三级缓存地址中的65,62,63部分读出三级主动表50中表项80及81。如81为‘0’(无效),则以述匹配所得的三级缓存地址中的65,62,63,64部分对三级缓存存储器52寻址,读出一个二级缓存块存入二级缓存存储器42的一个二级缓存块中,并将这个二级缓存块的块号67及有效值‘1’写入三级主动表50中上述三级缓存地址所寻址的表项80及81中。
如果读出的表项81为‘1’(有效),则以读出的表项80中的BN2X值(67与64)寻址AL2二级主动表40读出表项76及77。如77为‘0’(无效),则以上述BN2X值与BNY拼合成BN2地址(67,64,13)存入轨道表20中正在填写的轨道上与上述分支指令对应的表项中。如76为‘1’(有效),则以表项中的BN1X与BNY拼合成BN1地址(68,13)存入轨道表20中正在填写的轨道上与上述分支指令对应的表项中。此外二级扫描器43译码所得的分支类型11也与上述BN2或BN1地址一起被存入轨道表20的轨道的表项中。对该一级缓存块的顺序下块地址也按上述方式匹配及寻址,如果顺序下个二级指令块尚未在二级缓存器存储器中,则将指令块从三级缓存52存入二级缓存42;并将得到的BN2或BN1地址存入上述轨道最右边的结束表项16中。如此可以保证在一级缓存存储器42中的指令,其分支目标及顺序下个一级缓存块至少已在二级缓存存储器42中或正在存储进42的过程中。
本实施例揭示了一种分层次的预取功能,每一存储层次可以保证本存储层次的分支目标至少在,或正在写入低一层次的存储层次中。这就使得处理器核正在执行的指令的分支目标指令在大部分情况下都在一级缓存或二级缓存中,掩盖了对更低存储层次的访问延迟。
在上述一级指令块被填入一级缓存存储器22,以及对缓存块的指令扫描建立相应轨道填入轨道表20的同时,也建立相关表37中的相应一行。在相关表37相应行中71域中填入所述一级缓存块的BN2X地址(67及64),以便所述一级缓存块被置换时,可以用所述BN2X地址置换轨道表中以该一级缓存块为目标的表项中该一级缓存块的块号BN1X,以保持轨道表中控制信息流的完整性。同时,也以正被写入轨道表20的轨道中的分支目标中BN1X为地址寻址相关表37中的行,将该行中的计数值70增‘1’,以此记录又有一条分支指令以该行为目标,并将正被写入的轨道本身的一级缓存块号写入其72域中,并将相应73域置为‘1’(有效),以记录分支源的路径(地址)。对于存入轨道结束表项的下一顺序一级缓存块地址,也按类似方式以该地址寻址相关表37中的一行操作。
轨道表20的表项中的分支目标地址格式如上所述可以是BN2或BN1格式。当轨道表表项从总线29输出时,控制器(如图4中27)对其中的分支类型11译码,如其地址格式为BN2则控制器以总线29上的BN2X地址(67及64)寻址二级主动表40读出表项76及77。如77为‘0’(无效),则以该BN2X地址寻址二级缓存存储器42读出一个一级指令块存入一级缓存器存储器22中的一个一级缓存块,并将该一级缓存块号及有效值‘1’存入二级主动表40中上述BN2X地址指向的表项76及77。如77为‘1’(有效),则以76中的BN1X68写入轨道表中表项12但不改变表项13中的BNY,因此以BN1地址替换了原来的BN2地址。该BN1X地址并可被旁路到总线29上供循迹器47使用。循迹器47寻址轨道表20,一级缓存器存储器22;循迹器48寻址IRB 39为处理器核23提供不间断指令供其执行的过程与图4实施例相同,在此不再赘述。
本实施例的缓存置换逻辑(Cache Replacement Logic)以最少相关性(LeastCorrelation,LC)与最早被置换(Earlierst Replacement,ER)相结合的方式(以下简称LCER)确定可被置换的缓存块。相关表37中的计数值70即被用于检测相关性(也称关联度)。计数值越小,表示以该一级缓存块为目标的缓存块数量越少,便于置换。相关表37中各行共用的指针74指向可被置换的行(可置换行中的计数值70须低于一个预设的值)。当由该指针74指向的一级缓存块被置换时,轨道表20中由74指向的相应轨道也被二级扫描器43扫描置换进的一级缓存块提取的分支类型及分支目标等置换;也以相关表37中74所指向的行中各73域为‘1’(有效)的相应72域中BN1X地址寻址轨道表20中轨道,将该轨道中原来以被置换的一级缓存块号记载的分支目标地址置换成相关表37中74所指的行中71域中的BN2X,使各原来以被置换的一级缓存块中指令为分支目标的指令现以二级缓存缓存器22中的相同指令为分支目标,使得置换该一级缓存块不影响控制信息流。同时也以该BN2X寻址二级主动表40,将40的表项中的计数值75按上述以BN2X值在轨道表20中置换BN1X的次数增加,以记录该二级缓存块增加的相关性;并将该40的表项中与被置换的一级缓存块相应(由BN2X地址中64域指出)的有效位77置为‘0’(无效)。此后指针74沿单一方向移动,停留在下一个满足最少相关性的行上;当指针越出相关表37中所有的行的边界时则移动到另一边界(如超出地址最大的行则从地址最小的行起开始检测最少相关性检测)。指针74的单向移动保证了最早被置换过的一级缓存块优先被置换,即上述ER。检测各行的计数值75与指针74的单向移动实现LCER一级缓存置换策略。这种置换方式每次置换单数个一级缓存块。
此外还可以沿程序顺序用顺序或倒序的方式置换。比如当一个一级缓存块被置换时,将其轨道中结束表项中一级缓存块号BN1X指向的缓存块也置换,是为顺序置换。或当一个一级缓存块被置换时,将其相关表对应行中与顺序前一缓存块对应的72域中一级缓存块号BN1X也置换,是为倒序置换。甚至可以从一个一级缓存块开始既按顺序也按倒序置换。可以按顺序或倒序持续置换直到遇到一个一级缓存块,其相应的相关表37中计数值70超过预设值为止。这种置换方式每次置换复数个一级缓存块。可以视需要选用单数置换方法或复数置换方法。也可以将不同方法混合使用。如正常时使用单数置换方法,当低层缓存缺乏可被置换的缓存块时使用复数置换方法。
二级缓存的置换也基于LCER策略。除上述在一级缓存块被置换时将二级主动表40中相应的77域置为‘0’及增加计数值75外;在缓存块从二级缓存存储器42存入一级缓存存储器22时,二级主动表40中的相应表项中的相应有效位77被置为‘1’,一级缓存块号BN1X被写入相应的76域。每次当由分支目标地址等匹配所得的BN2X被存入轨道表20中,二级主动表40中该BN2X对应的计数值75被增‘1’;每次当轨道表表项中的BN2X被BN1X置换时,二级主动表40中该BN2X对应的计数值75被减‘1’。如此,计数值75记录了一个二级缓存块作为分支目标的次数;而表项中各有效位77则各自记录了该二级缓存块的一部分是否已存入一级缓存器;而表项中各76域则记录各相应一级缓存块的块地址68。二级缓存的置换使共用的二级指针78单向移动,停留在下一个可置换的二级缓存块上。可置换的二级缓存块可定义为其相应二级主动表40表项中计数值75及所有77域为‘0’。即当一个二级缓存块与一级缓存器22中的所有指令都不相关时可被置换,单向移动的指针78则保证了ER。
三级缓存的置换同样基于LCER策略。在缓存块从三级缓存存储器52存入二级缓存存储器42时,三级主动表50中的相应表项中的相应有效位81被置为‘1’,二级缓存块号BN2X被写入相应的80域。本实施例中不使用三级主动表50的表项中的计数值79。三级缓存为路组相联组织形式,对应每个组(同一索引地址)有复数个路,同组各路共用一个指针82。同样可由指针82寻找下一个可被置换的路,在此可置换的路可以是该路中的所有81域均为‘0’。亦即该三级缓存块与二级缓存器42中的指令都不相关,因此可被置换。上述用指针保证刚被置换的缓存块不被再次置换的方法也可以用别的方法代替。
本实施例中三级缓存器为组相联组织方式。如果遇到一组中各路都不可置换(三级主动表50的每路中至少有一个81域为‘1’),则可以选择其中81域为‘1’最少的一路的一级缓存块进行复数置换。如某路只有一个81域为‘1’,即该三级缓存块中可以存放的4个二级指令块中只有一个在二级缓存存储器42中,因此可将与该81域对应的80域中的BN2X输出寻址二级主动表40,从中读出按地址顺序第一个有效(其77域为‘1’)的76域中的BN1X号,并计算出从这个一级缓存块到二级缓存块中最后一个有效的一级缓存块一共是N个一级缓存块。即将该BN1X号及一级缓存块数目N送到一级缓存置换逻辑,从该BN1X指向的一级缓存块开始置换N个一级缓存块,并将以这些缓存块为目标的缓存块一并置换,则上述二级缓存块可被置换。之后三级主动表50中上述路组中的所有81域均为‘0’,相应的三级缓存块即可被置换。如果三级缓存块中包含的一级缓存块不连续,则按上述方法设置复数个起点和复数个相应的N值送到一级缓存置换逻辑依次置换。
图7实施例中各层次中的计数值如三级主动表50中的79,二级主动表40中的75,及(一级)相关表37中的70用于记录缓存块在同一存储层次中的关联度。有更高存储层次的各层次中的各有效位用于记录缓存块在更高存储层次中的关联度,如三级主动表50中的81记录与二级缓存块的关联度,二级主动表40中的77记录与一级缓存块的关联度。相关表37中的73则记录了跳转到一级缓存块的分支源地址。因此可以用37中本缓存块的BN2X地址71代替轨道表20中所述分支源地址指向的各表项中的本缓存块BN1X地址的方法以保持控制流信息的完整性。如此,使得本缓存块可被置换。另外的置换方式可以选择关联度为‘0’的缓存块置换。实质上,本发明所述缓存系统基于控制流信息操作,因此缓存置换的基本原则是无损于控制流信息的完整性。
请参考图8,其为本发明所述处理器系统的另一个实施例。图8是图5实施例的一个改进,其中三级主动表50,三级缓存的TLB及标签单元51,三级缓存器存储器52,选择器54,二级主动表40,二级缓存的存储器42,轨道表20,一级缓存的相关表37,一级缓存器的存储器22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图4实施例中相同号码的模块功能相同。其中二级扫描器43(可以产生分支类型)被接到从三级缓存器52到二级缓存器42的总线上,实施例中只有这一个扫描器。另外增加了二级轨道表88。图8实施例中各缓存器的组织方式与图5实施例中相同。
二级轨道表88中每条轨道对应二级缓存器42中一个二级缓存块。每条二级轨道中含有4条一级轨道,每条一级轨道对应二级缓存块中的一个一级指令块。二级轨道表88中的一级轨道其格式也采取图1中的SBNY 15,类型11,BNX 12及BNY 13的格式,地址格式可以是BN3或BN2格式。扫描器43对从三级缓存器存储器52送到二级缓存存储器42存储的二级缓存块进行扫描审查,对其中的分支指令计算其分支目标地址。分支目标地址经选择器54选择送到TLB/标签单元51匹配成BN3地址,BN3地址寻址三级主动表50检测表项是否有效(相应缓存块是否已存入二级缓存存储器42);若有效,将表项中的BN2X地址与BN3地址中的BNY拼合成BN2地址连同扫描器产生的SBNY 15与类型11存入二级主动表88中与该分支指令对应的表项;若无效,则直接以BN3地址连同SBNY 15与类型11存入88中表项。
当二级缓存器存储器42的二级缓存块中的一个一级指令块被存入一级缓存器存储器22中的一级缓存块时,二级轨道表88从总线89输出对应的一级轨道存入轨道表20。如果该轨道上的表项中地址是BN3地址格式,则以该地址寻址三级主动表50,如表项有效位81无效,即按前述方式将二级缓存块从三级缓存器52中存入二级缓存器42的一个二级缓存块中,并将该二级缓存块号与BN3地址中二级子地址64拼合形成BN2X地址存入三级主动表50中80域;如表项有效,即将表项中的BN2X存入二级轨道表88中替代原来的BN3X地址。该BN2X也被旁路到总线89上以供存入轨道表20。本实施例使用三级主动表50中的计数值79。与图6实施例中对二级主动表中计数值75的使用方法相似,当BN3地址被写入二级轨道表88时,其相应的三级主动表50中的计数值79增加,当从二级轨道表88输出的BN3地址在三级主动表50中映射为BN2地址时,其相应计数值79减少。三级缓存置换时不但要检查各有效位81的值,也要检查计数值79。
总线89上的BN2地址也被用于寻址二级主动表40,如40中表项有效位77无效,则以BN2地址存入轨道表20中的表项,如40中表项有效位77有效,则以40表项中的BN1X地址拼合BN2地址中的BNY地址存入轨道表20中的表项。当BN2地址从轨道表20经总线29输出时,被用以寻址二级主动表40,如表项中有效位77无效,则以该BN2地址访问二级缓存存储器42读出一个一级缓存块存入一级缓存存储器22中的一个一级缓存块号,将该一级缓存块号BN1X存入二级主动表40的76域,并将该BN1X存入轨道表20,也可将该BN1X旁路到总线29上供循迹器使用。本实施例中二级主动表88中轨道表项的地址可以是BN3或BN2格式,主动表20中轨道表项的地址可以是BN2或BN1格式。另外一种策略,则是填入轨道表20中的都是BN1地址,如果总线89上的地址是BN2格式,且寻址二级主动表40表项有效位77无效,则以该BN2地址访问二级缓存存储器42读出一个一级缓存块存入一级缓存存储器22中的一个一级缓存块号,并将该一级缓存块号BN1X存入二级主动表40的76域,将其相应77域设为有效;并将该BN1X存入轨道表20,也可将该BN1X旁路到总线29上供循迹器使用;如40中77位有效,则以表项76域中的BN1X直接填写轨道表20并旁路到总线29上供使用。
请参考图9,其为本发明所述处理器系统的间接分支目标地址产生器的一个实施例。间接分支目标地址一般由处理器核内寄存器堆中存储的一个基地址与间接分支指令中含有的分支偏移量相加获得。图9中93为加法器,39为IRB,95为复数个带比较器的寄存器,96为复数个寄存器,两者间是CAM-RAM的关系,一一对应。98为选择器。另外15,11,12,13为轨道表20经总线29输出的表项内容。系统会为每条间接分支指令安排一组寄存器95和96。加法器93以及IRB 39则是所有间接分支指令共用。间接分支指令的轨道表20的表项中15域SBNY,11域类型与图1中定义相同;但12域则改为用于存放寄存器堆(RF)地址,13域用于存储寄存器95,96的组号。当扫描器43译码所扫描的一条指令为间接分支指令时,按前述方式产生轨道表表项的15域及11域,将指令中的基地址寄存器堆号置于12域,而将13域置为‘无效’。当一个对应间接分支指令的表项第一次从轨道表20经总线输出时,其为‘无效’的13域使系统为其分配一组寄存器95,96(一组中有复数行CAM-RAM),该组寄存器的组号被存入轨道表表项13。轨道表表项15域寻址IRB39从中读出该间接分支指令中的分支偏移量送到加法器93的一个输入端;以轨道表表项12寻址寄存器堆读取其中的基地址;或如图9所示,检测寄存器堆的写地址,当该写地址与轨道表表项12域中地址相同时,将从处理器核中执行单元传输执行结果写回寄存器堆的总线94连接到加法器93的另一个输入端。加法器93的输出46即为分支目标地址,该地址被送到TLB/标签单元51匹配。同时总线94上的基地址也被存入轨道表表项13域所指向的寄存器组中的95寄存器中可用的一行;分支目标指令匹配所得的BN1地址经总线89存入13域指向的寄存器组中96寄存器中的同一行。
当13域为‘无效’或当其‘有效’但总线94上的基地址与寄存器95中的内容不匹配时,选择器98选择总线89上的BN1地址经总线99输出。当总线29上表项的类型为间接分支指令时,总线99的地址供循迹器47使用;总线29上表项类型为其他类型时选择总线29上的地址供循迹器47使用。下一次执行同一条间接分支指令时,总线29上轨道表表项中13域中的寄存器组号选择相应的寄存器组95及96,12域中的寄存器堆地址选择写回该寄存器堆表项的总线94上数据与寄存器95中的内容比较,如匹配,则相应寄存器96行中的BN1地址经总线97输出,由选择器98选择供循迹器使用;如不匹配,则如前所述由加法器93计算间接分支目标地址匹配成BN1地址放上总线89,选择器98选择总线89上地址输出。不匹配也导致总线94上的基地址及总线89上的BN1地址被存入寄存器95,96中未被使用的一行中。置换逻辑负责为总线29的间接分支类型中域13为‘无效’的表项分配寄存器组95,96,方式可以是LRU等。如此本实施例可以将间接分支指令的基地址映射为一级缓存器地址BN1,省却了地址计算及地址映射的步骤。
请参考图10,其为本发明所述处理器系统中处理器核的流水线结构示意图。100为传统计算机或处理器核的典型流水线结构,分为I,D,E,M,W段。其中I段为取指令段,D为指令译码段,E为指令执行段,M为数据访问段,W为寄存器写回段。101为本发明中处理器核的流水线段,与100相比少了I段。传统处理器核产生指令地址,送到存储器或缓存器以读取(拉取)指令。本发明的缓存系统自动向处理器核推送指令,只需要处理器核提供一个分支判断31以决定程序走向,一个停流水线信号32以同步缓存系统与处理器核。因此使用本发明的缓存系统的处理器核的流水线结构与传统流水线结构不同,不需要有取指令的流水线段。此外,使用本发明的缓存系统的处理器核也不需要保持指令地址(Program Counter,PC)。如图9所述,产生间接分支目标地址基于寄存器堆内的基地址,不需要用PC地址。其他指令也由缓存系统的BN地址访问,不用PC。因此使用本发明的缓存系统的处理器核中不需保持PC。
请参考图11,其为本发明所述处理器系统的另一个实施例。图11是图8实施例的一个改进,其中三级主动表50,三级缓存的TLB及标签单元51,三级缓存器存储器52,选择器54,扫描器43,二级轨道表88,二级主动表40,二级缓存存储器42,轨道表20,一级缓存的相关表37,一级缓存器的存储器22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图8实施例中相同号码的模块功能相同。增添了二级相关表103,以及102。102即图9实施例中所示的间接分支目标地址产生器。图11实施例中缓存器组织形式与图5及图8实施例相同。
二级相关表102与相关表37的结构类似。其中对应每个二级缓存块有计数值,与该二级缓存块相应的三级缓存地址,以本二级缓存块为分支目标的分支源指令的源地址及其有效信号(可参考图7中CT格式);如同在相关表中一样,计数值是分支源指令的数目。当扫描器43产生与二级缓存块相应的轨道填入二级轨道表88时,以填入的轨道表项中的BN2格式分支目标地址寻址二级相关表103中的行(以下称目标行),将正在填入二级轨道表88的轨道(下称源轨道)的二级缓存器地址填入目标行中的源地址域并将其有效信号设为‘有效’,并将目标行计数增‘1’。也在与源轨道对应的二级相关表103中的行中填入源轨道的对应三级缓存器地址。另外当填入二级轨道表88的表项中地址为BN3格式时,以所述BN3地址寻址三级主动表50表项,使其中的计数值79增‘1’。
轨道表20的输出29上表项地址格式为BN2格式时,会被用以寻址二级主动表40,若相应表项为无效,则需以该BN2(以下称源BN2地址)地址从二级缓存器存储器42中读取指令块填入一级缓存器22中由置换逻辑指定的一级缓存块。此时由该源BN2地址寻址二级轨道表88输出相应轨道送往轨道表20存储。当88的输出89上是BN3地址格式(以下称目标BN3地址)时,该目标BN3地址被送到三级主动表50映射为BN2地址(以下称目标BN2地址),此时该目标BN3指向的三级主动表表项中计数值减‘1’,而二级相关表103中目标BN2地址指向的目标行中的值被增‘1’;目标BN3地址被存入同一目标行中,而源BN2地址也被存入同一目标行中,其相应有效位被设为‘有效’。
当一个二级缓存块被替换时,二级指针78指向二级相关表103中该可置换二级缓存块的相应目标行,从中读出各有效的BN2源地址,以各该BN2源地址寻址二级轨道表88将相应表项中的BN2目标地址(指向上述目标行)用103中目标行中的BN3目标地址替换,并将103中目标行中各BN2源地址的有效位置为‘无效’。此时103中目标行中计数值减去等于有效的BN2源地址的值,并以上述BN3目标地址寻址寻址三级主动表50中表项,将其计数值79增加与103中计数值减去的值相同的值。
上述的缓存器置换方法都是基于包含性缓存器(inclusive cache)描述,即高缓存层次的内容一定在低缓存层次中。还可以将最少关联缓存置换方法应用与非包含性缓存器(non-exclusive cache)。可以在高层次缓存块对应的相关表中增设一个锁定信号位,当该锁定信号位为‘0’时,其操作与上述同;当该锁定信号位为‘1’时,则相应缓存块只有在其关联度为‘0’时,即没有分支指令以该缓存块为目标时(此处将顺序上一指令块的结束表项也视为存储有无条件分支指令),可置换该缓存块。在相关表37中,此即当一个上述锁定信号位为‘1’的一级缓存块只有当其相应计数值70为‘0’,及所有的有效位73都为‘0’时方可被置换。在二级相关表103中,上述锁定信号位为‘1’的二级缓存块只有当其相应计数值及所有有效位都为‘0’时方可被置换。
例如当三级缓存要置换一个组(set)其中一路(way)的三级缓存块时,可以三级指针83上的BN3地址寻址三级主动表50中的表项,以其中所有有效的BN2地址寻址二级相关表103中的行并将其中锁定信号设为‘1’。此后该三级缓存块即可被置换。置换后缓存器即工作于非包含性状态。所述锁定信号设为‘1’的二级缓存块中相应的三级缓存块已被置换,因此不能以将二级轨道表88的表项中的BN2地址用相应的BN3地址替换的方法保持控制信息流的完整性,要等到二级缓存块的关联度为‘0’时,该二级缓存块才可以被置换。
如果将所有高层次缓存都假设为有一个为‘1’的锁定信号,即高层次缓存块只有在关联度为‘0’时才可被置换;并且在主动表对应一个缓存块的表项中的所有高层次子缓存块的有效位(如三级主动表50中的81)都为‘1’,且表项中的计数值(如50中的79)为‘0’时将该三级缓存块设为可置换,则缓存器是排他性(exclusive)组织方式。也可以设置缓存器的置换方式为在所有缓存层次的缓存块在关联度为‘0’时置换。
图11中102即图9实施例中的间接分支目标地址产生器,其接受轨道表20输出的总线29上表项控制,从处理器核23获取基地址94,产生间接分支目标地址46经选择器54送往51中进行虚实地址转换及地址映射,输出BN1分支目标地址99供循迹器47使用。当总线29上表项的类型为间接分支指令时,循迹器47选择102输出的地址99;当总线29上表项的类型为其他指令时,循迹器47选择轨道表20输出的总线29上的地址。从图11实施例中可见所有指令均由缓存系统向处理器核23推送,处理器核23只向缓存系统提供分支判断31及间接分支的基地址94。间接分支目标地址产生器102也可被应用于图4,图5,及图8实施例使其中所有指令都由缓存系统向处理器推送。
可以进一步将图4,图5,图8及图11实施例中的方法应用于控制对存储器寻址。请看图12,其为本发明所述处理器/存储器系统的一个实施例。图12实施例在图11实施例的基础上将所述方法应用于处理器外的存储器,其他实施例都可以按此类推。图12中虚线以下是处理器中的功能块及连线,除了没有三级缓存存储器52以外,与图11实施例中完全一样。其中三级主动表50,三级缓存的TLB及标签单元51,选择器54,扫描器43,二级轨道表88,二级主动表40,二级缓存存储器42,二级相关表103,间接分支目标地址产生器102,轨道表20,一级缓存的相关表37,一级缓存器的存储器22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图11实施例中相同号码的模块功能相同。图12中虚线以上新增了存储器111以及其地址总线113;也新增了存储器112以及其地址总线114;总线115将存储器112输出的信息块送到虚线以下处理器中二级缓存器存储器42存储,这些信息中的指令也由扫描器43扫描并如之前实施例所述提取分支指令信息。其中存储器111按存储器组织,由在51的TAG中未获得匹配的存储器地址113(其来源为102或43产生的虚拟存储器地址经51中TLB映射所得物理地址)寻址。其中存储器112按缓存器组织,由在51的TAG中获得匹配产生的,或由二级轨道表88经89输出的,三级缓存器地址114寻址。实际上是将处理器外的存储器112作为三级缓存器存储器以代替图11实施例中的52。的为也以及存储器图12实施例中缓存器组织形式与图5及图8实施例相同。存储器111即图4,5,8,11中未显示但描述了的低层次存储器。因此图12实施例与图11实施例相比,除了将处理器中的最后级(三级)缓存的存储器(在图11中为52)搬到处理器外(在图12中为112),实际上两个实施例是逻辑等效的。图12实施例中缓存器(包含作为三级缓存器存储器的存储器112)组织形式与图11实施例相同。
图12实施例中的结构可以有几种不同的应用。第一种应用形式为:存储器111为容量较大当访问延迟也较大的存储器;而存储器112为容量较小但访问延迟也较小的存储器。即存储器112作为存储器111的缓存。所述存储器可以由任何合适的存储设备构成,如:寄存器(register)或寄存器堆(register file)、静态存储器(SRAM)、动态存储器(DRAM)、闪存存储器(Flash memory)、硬盘(HD)、固态硬盘(SSD)以及任何一种合适的存储器件或未来的新形态存储器。这种应用的操作与图11实施例是一样的。即扫描器43扫描从存储器112经总线115送到二级缓存器存储器42的指令块,计算其中直接分支指令的虚拟分支目标地址,将虚拟分支目标地址送到选择器54(102也产生间接分支指令的虚拟分支目标地址经总线46送到54),经54选择后在51中TLB映射为物理地址,该物理地址与51中TAG匹配。如果不匹配,则该物理地址经地址总线113被送到存储器111读取相应指令块存入存储器112中由前述三级缓存器置换逻辑所指出的可被置换的三级缓存块中,并将该三级缓存块号与选择器54输出的低位地址合并成BN3地址存入二级轨道表88。如果匹配,则如之前实施例所述,以匹配所得的路号,选择器54输出的索引地址等拼合成BN3地址用以寻址三级轨道表50读取BN2地址存入二级轨道表88;如50中的表项‘无效’,则直接以BN3存入88。其余操作与实施例相同,在此不再赘述。
第一种应用的一个具体实施例可以是以闪存存储器(Flash memory)作为存储器111,而以DRAM作为存储器112。闪存存储器容量较大,成本较低,但是访问延迟较大,且可写次数有限。DRAM存储器容量较小,成本较高,但是访问延迟较小,且可写次数无限。因此图12实施例中结构发挥了闪存及DRAM各自的优势而掩盖了各自的劣势。在此第一种应用中111与112共同作为计算机系统的主存储器(main mamory,内存)使用。在111以外还有更低存储层次如硬盘等。第一种应用适用于现有的计算机系统,可以使用现有的操作系统。现有计算机中由操作系统中的存储管理器管理内存,即记录那些内存是正在使用的,那些内存是空闲的;在进程需要时为其分配内存,在进程使用后释放内存。因为由软件进行存储管理,执行效率比较低。
图12实施例的第二种应用,则以非易失性的存储器(如硬盘,固态硬盘,闪存等),作为存储器111;而以易失性或非易失性的存储器作为存储器112。在此图12实施例的第二种应用中,111是作为计算机中的硬盘使用;而112作为计算机中的内存存储器使用,但112是按缓存器组织的,因此可以由处理器的硬件对112做存储管理。在这种系统结构中,不或很少针对指令使用操作系统中的存储管理器。存储器111中的指令如前述按块存入存储器112中,在某个具体实施例中,所述指令块可以是虚拟存储器(virtual memory)中一个页面,此时51中标签单元TAG的每个标签可以代表一个页面。
设此具体实施例中的地址为图6中所示格式,存储器111(硬盘)地址113被划分为标签61,索引62,二级子地址63,一级子地址64,与一级块内偏移量(BNY)13。此例中的存储器111(硬盘)地址可以有较普通主存地址更大的地址空间,以寻址整个硬盘,其中63,64与13拼合即为一个页面内的偏移地址;61与62拼合即为页号。存储器112(主存,即前述实施例中三级缓存器)的地址BN3由路号65及索引62,二级子地址63,一级子地址64,与块内偏移量(BNY)13组成;其中路号65与索引62拼合即主存112的块地址,而一个块即上述一个页面;65,62,63拼合寻址主存指令块(页面)中的一个二级指令块;而除块内偏移量13的各项合称为BN3X,寻址主存指令块(页面)中的一个一级指令块。二级缓存器的地址BN2由二级缓存块号67及一级子地址64,与块内偏移量(BNY)13组成;其中二级缓存块号67寻址一个二级缓存块;除块内偏移量13的各项合称为BN2X,寻址二级缓存块中的一个一级指令块。一级缓存器的地址BN1由一级缓存块号68(BN1X)与块内偏移量(BNY)13组成。上述4种地址格式中的块内偏移量(BNY)13是一样的,进行地址转换时该BNY部分不变化。BN2地址格式中二级块号67指向一个二级缓存块,一级子地址64指向二级缓存块中4个一级指令块中的一个。同理,BN3地址格式中的路号65及索引62指向一个主存指令块,二级子地址63指向主存指令块中若干个二级指令块中的一个,一级子地址64指向选中的二级指令块中若干个一级指令块中的一个。
当操作系统控制图12中处理器开始执行一个新的线程时,使新线程的起点的地址(存储器111地址格式)经选择器54(假设在此具体实施例中选择器54有第三个输入供起点地址进入),送到51中。起点地址中的索引62寻址51中标签单元TAG,读出各路中的标签内容与起点地址中的标签61匹配。如果不匹配,则该起点地址中的61与62经总线113寻址存储器111读出相应页面(指令块)存入存储器112中由起点地址中索引62指出的一组(set)中由主存(即前述实施例中三级缓存器)置换逻辑以路号65指定的一路(way)中;此时也将起点地址中的61与62域存入-51中标签单元中的同一路同一组中。
此后,或当起点地址中的61与标签单元中的标签内容匹配时,系统控制器以上述路号65,起点地址中索引62,二级子地址63从存储器112(主存)中读出一个二级指令块存入二级缓存器存储器42中,由二级缓存置换逻辑以二级块号67指定的的一个二级缓存块;并将该二级块号67存入三级主动表50中由上述65,62,及63指向的表项80并将表项中的有效位81置为‘有效’。扫描器43扫描上述二级指令块,提取其中分支指令信息,产生轨道存入二级轨道表88。此后系统控制器进一步以上述二级块号67拼合起点地址中一级子地址64读取42中的一个一级指令块存入一级缓存器存储器22中由一级缓存置换逻辑以一级块号68指定的一个一级缓存块;二级轨道表88中相应轨道也被存入轨道表20,过程中轨道上BN3格式的地址如前述被替换为BN2;该一级块号68也被存入二级主动表40中由上述67,64指向的表项76并将表项中的有效位77置为‘有效’。最后系统控制器将上述一级块号68拼合起点地址中一级块内偏移量BNY13作为BN1地址置入循迹器47中寄存器26,使读指针28指向一级缓存器存储器22中的上述线程的起点指令也指向轨道表20中的相应表项。此后向处理器核的推送操作与前述各实施例类似。总而言之,操作系统注入的新线程起点地址,或扫描器43或间接分支地址产生器102产生的硬盘地址经选择器54选择后被送到51中的标签单元匹配。当匹配成功时,匹配所得BN3地址寻址三级主动表50。如50输出的表项‘有效’,则以表项中BN2寻址二级主动表40。如50输出的表项‘无效’,则以上述BN3地址直接寻址存储器112(主存)向二级缓存器存储器42输出二级指令块。当上述硬盘地址在51中的标签单元中匹配不成功时,则经总线113寻址存储器111(硬盘),读出相应指令块(页面)存入存储器112(主存)中由缓存置换逻辑指定的主存缓存块,覆盖原来存在该缓存块中的指令块。这个从硬盘到主存的置换过程完全是由硬件控制完成的,基本不需要软件操作。置换逻辑可使用各种算法如LRU,NRU(not recently used,最近未使用),FIFO,时钟(clock)等。
如果上述硬盘地址的地址空间大于或等于存储器111的地址空间,则图12实施例中51中不需要有转换检测缓冲器TLB,且硬盘地址是物理地址。由操作系统注入的起点地址是物理地址,由此地址映射所得的主存地址BN3(用于寻址存储器112)是物理地址的映射。其余BN2地址,BN1地址是BN3地址的映射,因此也是物理地址的映射。存储器111(硬盘)是存储器112(主存)的虚拟内存,而存储器112(主存)是存储器111(硬盘)的缓存。因此不存在程序的地址空间大于主存的地址空间的情形。同一时刻执行的复数个同一程序其BN3地址相同,同一时刻执行的不同程序其BN3地址必定不同。因此同一时刻不同的程序的相同虚拟地址会被映射成不同的BN地址,不会混淆。推送体系结构中处理器核并不产生指令地址。因此可以直接以物理硬盘地址作为处理器的地址。不需要如同现有的处理器系统中由处理器核产生虚地址,然后映射为物理地址访问存储器。
可以将图12实施例中存储器111及存储器112封装在一个封装中作为存储器。图12实施例中处理器与存储器之间的接口除了现有的存储器地址总线113以及指令总线115以外,还另外增加了缓存地址BN3总线114。虽然图12实施例中存储器与处理器的分界如同虚线所示,但也可以将一些功能块从分界的一侧移动到另一侧。比如将三级主动表50,51中的TLB及标签单元TAG放置在虚线以上的存储器侧,其与图12实施例以及图11实施例还是逻辑等效的。另外可以将单数或复数个非易失性的存储器111芯片与单数个或复数个存储器112芯片以及图12中虚线以下的存储器芯片(可增添对外接口)通过TSV通孔相互连接,封装在单一封装中作为微型物理尺度的完整计算机。
请看图13,其为本发明所述处理器/存储器系统的另一个实施例。图13实施例是图8,图11,图12实施例的更通用的表述方式。其中存储器111,三级缓存器存储器112,三级主动表50,三级缓存的TLB及标签单元51,选择器54,扫描器43,二级轨道表88,二级主动表40,二级缓存存储器42,二级相关表103,间接分支目标地址产生器102,轨道表20,一级相关表37,一级缓存器存储器22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图12实施例中相同号码的模块功能相同。新增了四级主动表120,四级相关表121及四级缓存器存储器122,由51产生的BN4总线123寻址。也新增了三级轨道表118,三级相关表117,其中存储从图8,图11,图12实施例中三级主动表50中提取出来的计数值,使各层级主动表的格式一致。即图13实施例中50中没有计数值,该计数值保存在117中。
图13实施例中存储器层次结构的最低层次111为存储器,由存储器地址113寻址。其余各存储器层次均为111的不同层次缓存由相应BN缓存地址寻址。其中最低层缓存,即图中四级缓存器122为路组相联组织结构。其余更高存储缓存器层次均为全相联结构。扫描器43位于四级缓存器存储器122与三级缓存器存储器112之间。TLB/TAG 51在四级缓存中。较扫描器43层次高的各缓存层次均有轨道表如118,88,20。除最高缓存层次外的各缓存层次均有主动表如120,50,40。各缓存层次均有相关表如121,117,103,37。各存储表的格式请见图14。
图14为图13实施例中各存储表的格式。图13实施例里51中标签单元的格式为物理标签86。51中TLB的CAM格式是线程号83以及虚拟标签84,RAM格式是物理标签85。图13中选择器54选择输出的线程号83及虚拟标签84在TLB中被映射为物理标签85;虚拟地址中的索引地址62读出标签单元中的物理标签86与85匹配以获得路号65。路号65以及虚拟地址中的索引地址62拼合形成四级缓存块地址123。也可以如前述51中不设TLB,以选择器54选择的物理地址直接与TAG中物理标签86匹配。图14中轨道表各表项含有类型11,缓存块地址BNX 12及BNY13,还可以含有SBNY 15以确定分支执行时间点。每一层次的轨道表中的缓存块地址12可以是本层次或低一层次的BN格式,如三级轨道表118中12可以是BN3X或BN4X格式。主动表表项中有相应子块的缓存器块号76,其格式为比本层次高一层次的缓存块号,如三级主动表50中存储的是BN2X;另外还有相应的有效位77。主动表的功能是将本层次的缓存地址映射为高一层次的缓存地址。相关表中有计数值70,其意义是本存储层次或高一存储层次轨道表中以该缓存块为分支目标的表项数;另有与该缓存块相应的低一层缓存块号71;以及本存储层次中以该缓存块为分支目标的轨道表表项地址72及其相应有效位73。各路共用的指针74如前所述指向最长时间未被置换的缓存块;如该缓存块对应的计数值70小于预设置换阈值,则该缓存块可被置换。置换时以73‘有效’的72中地址寻址轨道表中表项,以低一层缓存块号71替换轨道表表项中的本层次缓存块号。例外的是四级相关表121中只有计数值70,而无71,72,73,因为该层次没有轨道表,无需进行上述轨道表表项内的地址替换。
当一个指令块从存储器122(四级缓存器存储器)经总线向三级缓存存储器112传送时,扫描器43提取指令块中分支地址的信息,产生轨道表项类型,也计算分支目标地址。所述分支目标地址经选择器54选择送到51中与标签单元匹配。如不匹配,则所述分支目标地址经总线113寻址存储器111,读出相应指令块存入存储器122中由四级缓存置换逻辑(四级主动表120及四级相关表121等)选定的四级缓存块。如匹配,则匹配所得的BN4X地址123寻址四级主动表120,若该120表项有效,则以表项中BN3X地址与分支目标地址的BNY拼合为BN3地址经总线125存入三级轨道表118中与该分支指令对应的表项;若该120表项无效,则直接以BN4X地址与上述BNY地址拼合成BN4地址存入118中表项。
请参考图15,其为图13实施例中处理器系统的地址格式。存储器地址被划分为标签61,索引62,三级子地址126,二级子地址63,一级子地址64,与块内偏移量(BNY)13。四级缓存器的地址BN4由路号65及索引62,三级子地址126,二级子地址63,一级子地址64,与块内偏移量(BNY)13组成;其中除BNY 13的部分合称为BN4X。三级缓存器的地址BN3由三级缓存块号128,二级子地址63,一级子地址64,与块内偏移量(BNY)13组成;而除块内偏移量13的各项合称为BN3X。二级缓存器的地址BN2由二级缓存块号67及一级子地址64,与块内偏移量(BNY)13组成;除块内偏移量13的各项合称为BN2X,寻址二级缓存块中的一个一级指令块。一级缓存器的地址BN1由一级缓存块号68(BN1X)与块内偏移量(BNY)13组成。上述4种地址格式中的块内偏移量(BNY)13是一样的,进行地址转换时该BNY部分不变化。
当二级指令块从三级缓存存储器112向二级缓存存储器42填充时,相应轨道由三级轨道表118中经总线119读出,其轨道表项中的BN4格式地址寻址四级主动表120;若该120表项有效,以其中的BN3X地址填入118中的轨道表项并旁路到总线119也存入二级轨道表88中的对应表项,若该120表项无效,则119总线上的上述BN4地址寻址存储器122,读出相应指令块填入存储器112中由三级缓存置换逻辑(三级主动表50及三级相关表117等)所给出的BN3X地址指向的三级缓存块。该BN3X地址被存入四级主动表120中由上述BN4地址指向的表项,被存入三级轨道表118中相应表项,该BN3X地址并被旁路至总线119也存入二级轨道表88中的对应表项。如总线119上输出的已经是BN3X地址,则以该BN3X地址寻址三级主动表50,若该50表项有效则以其中BN2X地址存入二级轨道表88中的对应表项;若该50表项无效则以119上的BN3X地址寻址存储器112,读出相应二级缓存块存入二级缓存器存储器42中由二级缓存置换逻辑(二级主动表40及二级相关表103等)给出的BN2X地址指向的二级缓存块;该BN2X也被存入三级主动表50中由上述BN3X寻址的表项;该BN2X也被存入二级轨道表88中。
当一级指令块从二级缓存存储器42向一级缓存存储器22填充时,相应轨道由二级轨道表88中经总线89读出,其轨道表项中的BN3格式地址寻址三级主动表50;若该50表项有效,其中的BN2X地址填入88中的轨道表项并旁路到总线89也存入一级轨道表20中的对应表项;若该50表项无效,则89总线上的上述BN3地址寻址存储器112,读出相应指令块填入存储器42中由二级缓存置换逻辑(二级主动表40及二级相关表103等)所给出的BN2X地址指向的二级缓存块。该BN2X地址被存入三级主动表50中由上述BN3地址指向的表项,被存入二级轨道表88中相应表项,该BN2X地址并被旁路至总线89也存入一级轨道表20中的对应表项。如总线89上输出的已经是BN2X地址,则以该BN2X地址寻址二级主动表40,若该40表项有效则以其中BN1X地址存入一级轨道表20中的对应表项;若该40表项无效则以89上的BN2X地址寻址存储器42,读出相应一级缓存块存入一级缓存器存储器22中由一级缓存置换逻辑(一级相关表37等)给出的BN1X地址指向的一级缓存块;该BN1X也被存入二级主动表40中由上述BN2X寻址的表项;该BN1X也被存入一级轨道表20中。
当指令块从一级缓存存储器22向处理器核23或IRB39推送时,其相应轨道由一级轨道表20中经总线29读出,其轨道表项中的BN2格式地址寻址二级主动表40;若该40表项有效,以其中的BN1X地址填入20中的轨道表项并旁路到总线29;若该40表项无效,则29总线上的上述BN2地址寻址存储器42,读出相应指令块填入存储器22中由一级缓存置换逻辑(一级相关表37等)所给出的BN1X地址指向的一级缓存块。该BN1X地址被存入二级主动表40中由上述BN2地址指向的表项,被存入一级轨道表20中相应表项。如总线89上输出的已经是BN1地址,则该BN1地址被存入循迹器47中的寄存器,成为读指针28,寻址轨道表20及一级缓存存储器22,向处理器核23或IRB39推送指令。如此可以保证在一级缓存存储器22中的指令,其分支目标及顺序下个一级缓存块至少已在二级缓存存储器42中或正在存储进42的过程中。其余操作如之前实施例所述,不再赘述。
虽然图13实施例以同时执行分支的两支的指令推送存储器/处理器系统展示,其存储器层次结构也可以适用于其他结构的处理器核,如由处理器核产生地址寻址一级缓存或指令读缓冲的乱序多发射处理器系统。可以将图13实施例的方法与系统应用于数据存储器层次结构及数据推送,使存储器层次结构也向处理器核推送数据。为便于说明,以下实施例假设数据存储器有与指令存储器同样的存储层次,即有存储器,四级缓存,三级缓存,二级缓存,一级缓存及数据读缓冲器,与指令存储器各层次相对应。因此数据存储器层次的地址格式也就如同图15实施例一样,只是存储器地址此时是数据地址而非指令地址,各BN地址可以是DBN(Data Block Number)地址以区别与BN地址,以适应分立的指令缓存及数据缓存。如在某个存储层次以单一存储器作为统一缓存(Unified Cache存储指令与数据)则该层次地址仍以BN名之。
每个存储层次也同样需要数据轨道表DTT,数据主动表DAL,数据相关表DCT及指针以支持数据存储器存储的操作。请参考图16,其为所述数据轨道表,数据主动表,数据相关表的格式。数据轨道表DTT中不需存储分支目标地址,因此只需要存储顺序下一个数据块的块地址DBNX 132以及其有效位133。可选的可以增加存储顺序上一个数据块的块地址130以及其有效位131,以便在逆序访问数据时使用。另外也可以完全不用数据轨道表。数据主动表DAL的格式与图14中所示的主动表AL格式76,77相同,其中134域存储数据块地址DBNX,135域存储相应的有效位。由数据块地址(如图15中的块2地址67)寻址本层次的DAL的一行,由子地址(如图15中的子2地址64)寻址该行中的一组134,135。如有效位135‘有效’,则将134中的高一层次块地址从DAL中读出以访问高一层次的数据存储器。即数据主动表DAL将存储层次地址映射为高一存储层次的地址。数据相关表DCT中则只存储相应的低一存储层次地址136。即数据主动表DAL可以将存储层次地址映射为相应的高一存储层次地址,而擞据相关表DCT中可以将存储层次地址映射为低一存储层次地址(图16中用DBLNX代表是低一层次地址)。指针137则被用于做缓存器替换,数据缓存的置换方式可以用本发明所公开的指令缓存的置换方式,但数据缓存的相关表中没有计数值,因为没有分支指令以数据缓存为跳入目标,因此置换时不需考虑替换轨道表中以数据缓存块为目标的地址,也不需记录分支源地址。一级缓存只需以指针137记录上次替换的缓存块,指针137单向遍历,或以LRU,LFU等方式置换。二,三,四级缓存如同指令缓存的置换方式,只要缓存块没有高层次的相应缓存块即可被替换。可各以本层次的指针137单向遍历,读出主动表中各表项,如某表项中所有地址域都‘无效’,则相应缓存块可被替换。本发明所公开的指令缓存的一级缓存置换方式也可以用LRU,LFU等方式。
数据推送存储器层次结构还使用步长表150以记录同一数据访问指令的相邻两次数据访问地址的差-步长(stride)。请参考图17,其为步长表格式及工作原理。150是个存储器,其中每一行对应一条数据访问指令(比如LD或者ST),由该数据访问指令的指令地址寻址。每行中有数据地址138,在以下的实施例中138的格式是DBN1,即一级数据缓存地址,其格式为DBN1X及DBNY,类似图15中68及13,139域为138的状态位。另外还有多组步长其中一组为140及相应有效位141;142及143是其他组的步长。每组步长如140及其相应有效位141,由所述数据访问指令在指令段的分支循环层次选择。请参考图17下部,直线代表顺序指令沿箭头方向顺序执行,弧代表反向分支,交叉代表分支指令,三角代表数据访问指令。其中146为数据访问指令,图17上部的步长表150行对应146,其中当分支指令140的分支判断为‘执行分支’时,该数据访问指令146的内循环步长被存入146对应150行的步长域140,当分支指令140的分支判断为‘不分支’时,且分支指令142的分支判断为不‘执行分支’时,该数据访问指令146的中循环步长被存入146对应150行的步长域142;当分支指令140的分支判断为‘不分支’时,且分支指令140的分支判断为‘不分支’时,且分支指令143的分支判断为‘执行分支’时,该数据访问指令146的外循环步长被存入146对应150行的步长域143。即分支判断是存优先权的,以紧接着数据访问指令之后的反向分支指令优先权最高,其他反向分支指令的优先权按次序递减,分支判断为‘执行分支’的高优先权分支指令会掩盖低优先权的分支指令使其不影响步长表150的读出。正向分支指令不在步长表中记录。可以由加法器将150的行中138数据地址DBN1与分支判断选择的步长如140等相加,获得下一数据地址以访问数据存储层次系统,提前获取数据向处理器核推
请参考图18,其为本发明所述处理器/存储器系统的另一个实施例。图18的左半部为与图13实施例相似的指令推送处理器系统,右半部为数据推送存储器层次结构。其中三级轨道表118,三级相关表117,三级缓存器存储器112,三级主动表50,三级缓存的TLB及标签单元51,扫描器43,二级轨道表88,二级主动表40,二级缓存存储器42,二级相关表103,间接分支目标地址产生器102,轨道表20,一级相关表37,一级缓存器存储器22,指令读缓冲器39,循迹器47,循迹器48,处理器核23与图13实施例中相同号码的模块功能相同。存储器111,四级主动表120,四级相关表121及四级缓存器存储器122功能与图13实施例中相似,差别在于不但存储指令,也存储数据及数据相关的辅助信息如数据缓存块号码等。四级主动表120的表项中可以存储三级指令缓存地址BN3,也可以存储三级数据缓存地址DBN3。选择器54现在是三输入选择器。扫描器43除执行图13实施例中对指令的扫描功能外,还计算经过总线115的数据块的顺序下个数据块地址(或逆序上个数据块地址)。右半部有三级数据缓存器存储器160,二级数据缓存器存储器161,一级数据缓存器存储器162,数据读缓冲163;步长表150;三级数据轨道表164,二级数据轨道表165,一级数据轨道表166;三级数据主动表167,二级数据主动表168;加法器169,170,171,172,173;三级数据相关表174,二级数据相关表175,一级数据相关表176;及选择器192。
图18中存储器111是以存储器地址寻址,存储器122是组相联缓存组织结构,其他各级缓存器都是全相联缓存组织结构。如同图13实施例,图18实施例中存储器111可以作为处理器/存储器系统的主存,此时122是处理器的最后一级缓存(Last Level Cache),是统一缓存;或者另一种系统组织方或以111作为系统的硬盘,此时122是按缓存方式组织的主存,而112则是处理器的最后一级指令缓存,160是处理器的最后一级数据缓存。图18实施例中左半部的指令推送与图13实施例完全一致,在此不再赘述。以下描述右半部的数据推送过程。数据读缓冲(Data Read Buffer,DRB)163的表项与IRB指令读缓冲39的表项一一对应。当IRB中的一条数据装载指令被IPT指针38推送到处理器核23中执行时,其相应的DRB表项中的数据也被38读出经总线196推送到处理器核23供处理。因此数据存储层次结构的任务是将处理器核将要用到的数据预先填入DRB中与IRB中数据访问指令相应的表项,使所述数据随指令被推送到处理器核23(数据与指令不一定同时推送,因处理器核执行的数据装载指令与其相应数据进入处理器核通常不在同一流水线段)。
当一个一级指令块被存入IRB 39时,其相应DRB 163被清空。当译码器(处理器核23中的指令译码器或此时附属于IRB 39的专用指令译码器)译出送往处理器核23的一条指令为数据装载指令时,系统为其在步长表150中分配一行供其专用。该行的状态位139被设为‘0’。根据该为‘0’的状态位,系统使处理器核23执行该数据装载指令产生的数据地址经总线94输出,经102旁路后经总线46,选择器54送往51中匹配。如不匹配,则如前述实施例13将数据地址经总线113访问存储器111读取一个四级数据块,存入存储器122中由四级缓存置换逻辑给出的路号(图15中65)拼合数据地址中的索引62指向的四级缓存块。并将该数据地址存入51中标签单元中同样由65及62指向的表项。
系统进一步以上述65,62连同数据地址中的三级子地址126从存储器122读出三级数据块,经总线115存入三级数据缓存器存储器160中由三级数据缓存置换逻辑给出的三级数据块号128指定的三级缓存块,并将该三级块号128存入四级主动表120中由65,62及126指向的表项域并将该域置为‘有效’。同时该65及62(四级块号)被存入三级相关表174中由上述128指向的表项。此外扫描器43计算上述三级数据块的顺序下一个三级数据块的地址(即数据地址加上一个三级数据块的大小),送到51中标签单元匹配得到BN4地址,以该BN4地址访问四级主动表120映射为DBN3X地址,与数据地址中的DBNY13拼合得到DBN3地址。将所得的DBN3或BN4地址存入三级轨道表164中由上述128指向的表项中132域。如顺序下一个三级数据块仍在同一缓存块中,则在上述126上加‘1’,与原来的65,62拼合即得到顺序下一个三级数据块的DBN3地址,不需经过51中标签单元映射。可选的,可以将该顺序下一个三级擞据块也填入三级缓存器存储器160,并按上述填充相应120级174中表项;一般不需要将该顺序下一个三级数据块的顺序下一个三级数据块也填入160。
系统进一步以上述128连同数据地址中的二级子地址63从三级数据缓存器存储器160读出二级数据块,存入二级数据缓存器存储器161中由二级数据缓存置换逻辑给出的二级数据块号67指定的二级缓存块,并将该二级块号67存入三级数据主动表167中由128,63指向的表项域并将该域置为‘有效’。同时该128(三级块号)被存入二级相关表175中由上述67指向的表项。可选的,此时在上述63上加‘1’,以128与加‘1’后的63拼合的地址寻址三级主动表167,若表项‘有效’,则说明顺序下个二级缓存块已在二级缓存中;若表项‘无效’,则从三级数据缓存器存储器160中以该128与加‘1’后的63拼合的地址读出二级数据块,存入二级数据缓存器存储器161中由二级缓存置换逻辑给出的另一个二级块号67指向的二级数据缓存块,并将该另一个67存入167中以128与加‘1’后的63拼合的地址寻址的表项,并将该表项设为‘有效’。
如顺序下一个二级数据块的地址越过了三级缓存块的边界,则三级轨道表164中上述128指向的表项经总线190被读出,如果该表项内容为BN4格式,则以该BN4地址经总线197访问四级主动表120。若120表项‘有效’,则以表项中DBN3地址存入164中128指向的表项置换原来的BN4;若120表项‘无效’,则以总线197上的该BN4地址访问存储器122读出顺序下一个三级数据块存入存储器160,并按上述方式填充相应的164,167,174及120中表项。以此保证当一个三级数据块的内容被存入二级数据缓存器时其顺序下一个三级数据块被存入三级数据缓存中。可选的,当三级轨道表164中由上述128指向的表项为DBN3格式时,将该DBN3经总线190如上述寻址三级主动表167,使正在填入二级缓存器存储器161的二级数据块的顺序下一个二级数据块也被填入161。当然也可以根据需要将逆序上一个数据块存入擞据缓存中,此时使用轨道表中130域。也可以完全不用各数据轨道表164,165,166。此时系统没有自动填充越过三级数据缓存块边界的顺序或逆序二级数据块的功能。其他各数据存储层次的预填充以同样方式进行。
系统进一步从二级数据缓存器存储器161中以上述67与数据地址中的一级子地址64拼合读出一级数据块,存入一级数据缓存器存储器162中由一级数据缓存置换逻辑给出的一级数据块号68指定的一级缓存块;开将该一级块号68存入二级数据主动表168中由67,64指向的表项域并将该域置为‘有效’。同时该67(二级块号)被存入一级相关表176中由上述68指向的表项。可选的,比时二级轨道表165中上述67指向的表项被读出,如果该表项内容为BN3X格式,则以该BN3地址经总线185寻址三级主动表167,如167表项‘有效’,即以167表项中的BN2X地址经总线189写回165替代BN3X地址。如果167表项‘无效’,即以185上地址寻址三级数据缓存器存储器160读取二级数据块存入二级数据缓存器存储器161中由缓存置换逻辑给出的二级缓存块地址另一个67指向的二级缓存块。该另一个67也被存入三级数据主动表167中185寻址的表项,也被存入二级数据轨道表165中替代BN3X地址。也以该67地址在二级数据主动表168及二级数据相关表175中为上述二级缓存块建立相应表项,其中175表项中存储上述BN3X地址。如此保证当一个二级数据块的内容被存入一级数据缓存器时其顺序下一个二级数据块被存入二级数据缓存中。
系统进一步将上述68与数据地址中DBNY 13一同作为一级数据缓存地址DBN1经总线193存入步长表150中与上述数据装载指令相应的行中138域,并将该行139状态域设为‘1’。根据该为‘1’的状态,系统以上述DBN1访问一级数据缓存器存储器162,读出数据存入DRB 163中与上述数据装载指令相应的表项中,使该数据可随指令被推送到处理器核23处理。当该数据被推送到处理器核23后,系统开始预取下一个数据存入DRB以供下次执行同一数据装载指令时推送。因此时状态域139为‘1’,预取数据供推送的过程与上述完全一样,只是在产生新的68与13(DBN1)时先将该DBN1与原存在步长表150中该行138域中的上一个DBN1相减,其差作为步长存入此时分支判断选定的表项,如140中。其后将新的DBN1写入138域取代旧的地址,并将状态域139设为‘2’。
当该第二个数据被推送到处理器核23后,当该数据装载指令之后的一条分支指令其分支判断为‘执行分支’时,系统开始预取下一个数据存入DRB以供下次执行同一数据装载指令时推送。因此时状态域139为‘2’,系统不再等待处理器核23计算数据地址。而是直接将步长表150中与该数据装载指令相应行中138域中DBN1地址,及分支判断选定的步长(如140)输出,在加法器173中相加。系统并对173的输出181进行边界判断。如181没有超出一级数据缓存块的边界,则选择器192选择181访问一级数据缓存器存储器162,读出数据存入DRB中相应表项以待推送。并将181上的地址作为DBN1存入步长表中相应行中138域。如181超出了一级数据缓存块的边界,但没有超出相邻的一级缓存块边界,则以181寻址一级数据轨道表166,读出顺序下一个一级数据块的DBN1X地址132(或逆序上一个数据块的DBN1X地址130)经总线191输出,由选择器192选择,与181上的DBNY地址13拼合访问存储器162,读出数据存入DRB中相应表项以待推送。并将上述拼合地址DBN1存入步长表150中相应行中138域。上述两种情况下150中状态域139都保持为‘2’不变。如果166输出的地址132为BN2X格式,系统将该BN2X经191寻址二级数据主动表168,如168表项‘有效’,即以168表项中的BN1X地址经总线184写回166替代BN2X地址。如果168表项‘无效’,即以191上地址寻址二级数据缓存器存储器161读取一级数据块存入一级数据缓存器存储器162中由缓存置换逻辑给出的一级缓存块地址68指向的一级缓存块。该68也被存入二级数据主动表168中191寻址的表项,也被存入一级数据轨道表166中替代BN2X地址。
如181超出了上述边界,但没有超出二级缓存块边界,则系统以DBN1地址138寻址一级相关表176,将DBN1地址映射为DBN2地址经总线182输出。加法器172将步长140与182上的DBN2地址相加,以其输出183寻址二级数据主动表168,如其表项‘有效’,则以表项中的DBN1X地址与183上的DBNY13拼合,经总线184访问一级数据缓存器存储器162,读出数据存入DRB中表项以待推送;并将184上的DBN1地址存入步长表150中相应行中138域,保持139域为‘2’不变。如二级数据主动表168中表项‘无效’,则以183寻址二级数据缓存器存储器161,读出一级数据块存入一级数据缓存器存储器162中由一级数据缓存置换逻辑给出的一级数据块号68指定的一级缓存块。系统并由该68与183上的DBNY拼合为DBN1地址访问162,读出数据存入DRB中表项以待推送;并将该DBN1地址存入步长表中相应行中138域,保持139域为‘2’不变。
如181超出了二级缓存块边界,但没有超出三级缓存块边界,则系统以上述总线182上的DBN2地址寻址二级相关表175,将DBN2地址映射为DBN3地址经总线186输出。加法器171将步长140与186上的DBN3地址相加,以其输出188寻址三级数据主动表167,如167中表项‘有效’,则以该表项中的DBN2X地址与188上的DBNY 13拼合,经总线189寻址二级数据主动表168。若168中表项‘有效’,则直接以表项中的DBN1X地址拼合总线188上的DBNY13作为DBN1地址经总线184访问一级数据缓存器存储器162,读出数据存入DRB中表项以待推送;并将该DBN1地址存入步长表中相应行中138域,保持139域为‘2’不变。若168中表项‘无效’,以总线189上的DBN2地址寻址二级数据缓存器存储器161,读出一级数据块存入一级数据缓存器存储器166中由一级数据缓存置换逻辑给出的一级数据缓存块号68指向的一级缓存块;该68也被存入168中由总线189寻址的表项,该表项被置为‘有效’。系统并由该68与189上的DBNY拼合为DBN1地址访问162,读出数据存入DRB中表项以待推送;并将该DBN1地址存入步长表中相应行中138域,保持139域为‘2’不变。
如181超出了三级缓存块边界,但没有超出四级缓存块边界,则系统以上述总线186上的DBN3地址寻址三级相关表174,将DBN3地址映射为BN4地址经总线196输出。加法器170将步长140与196上的DBN4地址相加,以其输出197寻址四级主动表120,如120中表项‘有效’,则以该表项中的DBN3X地址与197上的DBNY 13拼合,经总线125寻址三级数据主动表167。若167中表项‘有效’,则直接以表项中的DBN2X地址拼合总线125上的DBNY 13作为DBN2地址经总线189访问二级数据主动表168。若167中表项‘无效’,以总线189上的DBN2地址寻址二级数据缓存器存储器161,读出一级数据块存入一级数据缓存器存储器162中由一级数据缓存置换逻辑给出的一级数据缓存块号68指向的一级缓存块;该68也被存入168中由总线189寻址的表项,该表项被置为‘有效’。以总线189上的DBN2地址访问二级数据主动表168及后续操作与上一段中的描述相同。最终系统以DBN1地址访问162,读出数据存入DRB163中表项以待推送;并将该DBN1地址存入步长表中相应行中138域,保持139域为‘2’不变。
如181超出了四级缓存块边界,则系统以上述总线196上的BN4地址寻址51中标签单元读出相应标签61,经总线113送到加法器169。169将标签61与步长140相加,其和198经选择器54选择后送到51中标签单元匹配。如果匹配产生新的BN4地址,即以该新BN4地址经总线123寻址四级主动表120。若120中表项‘有效’,则将表项中DBN3X地址经总线125寻址三级主动表167。其后操作与上一段中经总线125寻址167的操作相同。若120中表项‘无效’,则以总线123上的新BN4地址寻址存储器122读出三级数据块填入三级数据缓存器存储器160,其操作如前述。如在标签单元中不匹配,则以总线198上的地址放上总线113寻址存储器111读出四级数据块存入四级缓存器存储器122。其过程本实施例前面已有描述,不再赘述。最终系统以经各层次主动表映射所得的DBN1地址访问162,读出数据存入DRB中表项以待推送;并将该DBN1地址存入步长表中相应行中138域,保持139域为‘2’不变。过程中若某一存储层次中的相应数据块还不存在,则系统会自动从低一存储层次读取该数据块存入本层次中由缓存置换逻辑指定的缓存块,该缓存块地址也被存入低一层次主动表,且低一层次的缓存块号被存入本层次的相关表以建立双向的映射关系。
以上描述了数据装载的推送过程。数据存储可以用类似的方法,也可以用传统的方法比如存入写缓冲器(write buffer),当数据缓存空闲时,将写缓冲器中的数据写回数据缓存。以步长表150中的步长猜测装载数据时(即150中139域为‘2’时),需要处理器核通过总线49送出正确的数据地址与猜测的DBN1地址比较。如果不同,需要将猜测装载的数据及其后续执行结果抛弃,以总线49上的正确数据地址装载数据,并将相应139域设为‘0’,重新计算步长存入150。如果有写缓冲器,则猜测装载的地址还要与写缓存器中地址比较以确定装载的数据是更新过的数据。可以将DBN地址映射为数据地址以与49上数据地址比较。也可以将49上地址映射为DBN地址与系统猜测产生的DBN地址比较。另外如果步长表150中由分支判断读出的步长的有效位如141等是‘无效’时,也要重新在该分支判断条件下如前述产生步长存入相应步长域。
图18实施例中的数据存储器层次结构其最低层次缓存为路组相联,该层次有标签单元,也可能有虚实地址转换的TLB;该层次可以由存储器地址经51中标签单元匹配寻址,或直接由缓存器地址BN4寻址。其余层次的数据缓存都为全相联,由缓存器地址DBN寻址。各DBN与BN4之间由主动表及相关表映射。其中主动表的作用是将低层次缓存器地址映射为高层次缓存器地址;相关表的作用是将高层次缓存器地址映射为低层次缓存器地址。其作用机制请参考图19。
图19为图18实施例中数据缓存层次结构的作用机制示意图。图19中200为一个四级缓存块,其中含有两个三级缓存块201,202。每个三级缓存块又含有两个二级缓存块,如201中含有二级缓存块203及204。每个二级缓存块又含有两个一级缓存块,如203中含有一级缓存块205及206。假设当前步长表150中138域中的DBN1地址指向一级缓存块205,则系统根据步长140的长度,以最少映射步骤,最少延迟的方式求得同一条数据装载指令的下一个一级数据缓存地址,以提前访问一级数据缓存存储器162读出数据存入DRB中相应表项。
以下结合图18与图19为例说明。假设指向205的138地址与140相加,其和没有超出205的边界,则直接以该和181作为新的一级数据缓存地址寻址一级数据缓存162读出数据存入DRB 163中相应表项。如138地址与140相加,其和181超出205的边界,但没有超出二级缓存块203的边界,则需要将138地址从BN1格式(图18实施中通过一级相关表176)映射为BN2格式182。加法器172将该182地址与步长140相加,其和183寻址二级主动表168中二级缓存块203的对应表项,从中读出一级缓存块206的DBN1X地址,与183上的DBNY13拼合作为DBN1寻址一级数据缓存器存储器162,也供存入150中138域。如果一级数据轨道表166中205缓存块的对应表项中存有顺序下一缓存块206的地址,也可直接以181(忽视181中进位溢出的位)寻址166,获得206的地址。
如果和181超出二级缓存块203的边界,则需要将138地址的DBN1格式经一级相关表176映射为DBN2格式182,再将DBN2格式经二级相关表175映射为DBN3格式186与步长140相加,其和174寻址三级主动表167中三级缓存块201的对应表项,从中读出二级缓存块204的DBN2地址189,再以189寻址二级主动表168,获得一级缓存块207的地址DBN1。即可以该地址经总线184寻址一级缓存器存储器162读取数据存入DRB163,并将该地址存入150中138域。如果和181超出三级缓存块201的边界,则将138中的DBN1地址经176映射为DBN2格式地址,再经175映射为DBN3格式地址,再经174映射为BN4格式地址;以该BN4地址寻址四级主动表120,获得DBN3格式地址125;以该DBN3地址寻址三级主动表167,获得DBN2地址189;以该DBN2地址寻址二级主动表168,获得一级缓存块207的地址DBN1。即可以该地址经总线184寻址一级缓存器存储器162读取数据存入DRB163,并将该地址存入150中138域。
图18,19实施例中数据缓存层次结构中各层次的缓存块形成一个树状结构。四级缓存块是树的根,其他层次的缓存块是根的不同层次的枝;其他各层次的缓存块又是更高层次缓存块的根。根与枝之间,枝与枝之间由双向的地址映射连接为树。从一个一级枝(一级缓存块)开始通过映射可以到达根(同一四级缓存块)以下任何一个一级枝。只有目标超出根的范围,才需要由51中标签单元匹配。目标枝与源枝属于同一分根,所需要经历的映射层次则少。目标枝与源枝分属不同分根,所需要经历的映射层次则多。可以改进图18实施例减少映射层次。
请参考图20,其为图18实施例中数据缓存层次结构的改进实施例。图20中三级数据缓存器存储器160,二级数据缓存器存储器161,一级数据缓存器存储器162,数据读缓冲163;步长表150;三级数据轨道表164,二级数据轨道表165,一级数据轨道表166;三级数据主动表167,二级数据主动表168;加法器172,173;三级数据相关表174,二级数据相关表175;及选择器192与图18中右半部相同号码的模块功能相同。一级数据相关表176格式如209所示。其中不但存有一级缓存块的二级数据缓存块号DBN2X,还存有其相应的三级数据缓存块号DBN3X以及四级缓存块号DB4X。
其操作与图18实施例相似,将步长表150中与数据装载指令相应行中138域中DBN1地址,及分支判断选定的步长(如140)输出,在加法器173中相加。系统并对173的输出181进行边界判断。如边界判断为在一级缓存块中,则直接以181寻址一级数据缓存器存储器162。如边界判断为在一级缓存块外。则以138上地址寻址一级相关表176中的一行209,根据上述边界判断选择209中的一个层级的缓存地址,由加法器172与步长140相加,其和为183。如边界判断为在二级缓存块中,则选择209中DBN2X与140相加,其和183被系统送到二级主动表168寻址;如边界判断为在三级缓存块中,则选择209中DBN3X与140相加,其和183被系统送到三级主动表167寻址;如边界判断为在四级缓存块中,则选择209中DBN4与140相加,其和183被系统送到四级主动表120寻址。其余操作与图18实施例相同,不再赘述。图20实施例可以节省从枝到根的逆向映射步骤与时延。另外可以增设一个加法器专门将209中BN4X拼合138中的DBNY13形成的地址与140相加,其和用于寻址51中标签单元,将3N地址映射为数据地址,以便与总线49上的正确数据地址比较。
虽然本发明的实施例仅仅对本发明的结构特征和/或方法过程进行了描述,但应当理解的是,本发明的权利要求并不只局限于所述特征和过程。相反地,所述特征和过程只是实现本发明权利要求的几种例子。应当理解的是,上述实施例中列出的多个部件只是为了便于描述,还可以包含其他部件,或某些部件可以被组合或省去。所述多个部件可以分布在多个系统中,可以是物理存在的或虚拟的,也可以用硬件实现(如集成电路)、用软件实现或由软硬件组合实现。
显然,根据对上述较优的实施例的说明,无论本领域的技术如何发展,也无论将来可能取得何种目前尚不易预测的进展,本发明均可以由本领域普通技术人员根据本发明的原理对相应的参数、配置进行相适应的替换、调整和改进,所有这些替换、调整和改进都应属于本发明所附权利要求的保护范围。

Claims (30)

1.一种处理器系统,包括:处理器核和缓存器;其特征在于:
所述缓存器向所述处理器核推送指令及数据供所述处理器核执行及处理。
2.如权利要求1所述的系统,其特征在于:
所述处理器核向所述缓存系统提供分支判断;
所述缓存器审查其中存储的指令,提取并存储指令的控制流信息;
所述缓存器根据所述控制流信息及所述分支判断向所述处理器核推送指令供处理器核执行。
3.如权利要求2所述的系统,其特征在于:
所述处理器核向所述缓存系统提供间接分支指令的基地址;
所述缓存器根据所述基地址产生间接分支目标地址,向所述处理器核推送间接分支指令供处理器核执行。
4.如权利要求1所述的系统,其特征在于:
所述处理器核流水线不设取指令流水线段;
所述处理器核不产生指令地址;
所述处理器核不向所述缓存器提供指令地址以读取指令。
5.如权利要求1所述的系统,其特征在于:
该系统的缓存器连接至存储器;
所述缓存器产生并向所述存储器提供存储器地址;
所述存储器根据所述存储器地址向缓存器提供指令。
6.如权利要求2所述的系统,其特征在于:
所述的缓存器中仅最低存储层次有虚实地址转换;
所述的缓存器中仅最低存储层次有存储器地址对缓存器地址的映射。
7.如权利要求2所述的系统,其特征在于:
所述的缓存器中最低存储层次以路组相联方式组织;
所述的缓存器中除最低存储层次以外的其他存储层次为全相联方式组织。
8.如权利要求2所述的系统,其特征在于:
所述的缓存器中的相邻存储层次之间各有扫描器;
所述扫描器审查在所述相邻存储层次之间传递的指令以提取控制信息流。
9.如权利要求2所述的系统,其特征在于:
所述的缓存器中在所述最低存储层次与次低存储层次之间有扫描器;
所述扫描器审查在所述最低与次低存储层次之间传递的指令以提取控制信息流;
存储所述提取的控制信息流以备比所述次低存储层次更高的存储层次调用。
10.如权利要求2所述的系统,其特征在于:
所述的缓存器中最高存储层次有第一读口及第二读口;
所述的缓存器中最高存储层次有第一循迹器及第二循迹器;
所述的第一及第二循迹器根据所述存储的控制流信息及所述分支判断,控制所述的第一读口及第二读口向处理器核提供分支指令后的顺序指令及分支目标指令;
所述的处理器核执行所述分支指令,产生分支判断;
所述的处理器核以所述分支判断决定执行并写回顺序指令或分支目标指令。
11.如权利要求3所述的系统,其特征在于:
所述的缓存器中存储所述间接分支指令的所述基地址与所述间接分支目标指令对;
所述的缓存器可以根据所述间接分支指令及所述基地址向处理器核提供存储的所述间接分支目标指令。
12.一种缓存器置换方式;其特征在于:以最少关联度原则决定被置换的缓存块。
13.如权利要求12所述的方法;其特征在于:进一步以最早曾被置换的原则决定被置换的缓存块。
14.如权利要求12所述的方法;其特征在于:
所述缓存器中的缓存块存有关联记录;
所述关联记录中记录以该缓存块为分支目标的指令的数目作为所述关联度。
15.如权利要求12所述的方法;其特征在于:
所述缓存器中的缓存块存有关联记录;
所述关联记录中记录以与所述缓存块的部分或全部内容相同的更高层次缓存块的数目作为所述关联度。
16.如权利要求12所述的方法;其特征在于:
所述缓存器中存有控制流信息,所述控制流信息中记录了分支目标地址;
所述缓存器中的缓存块存有关联记录;
所述关联记录中记录所述缓存块在低一存储层次中的地址;
所述关联记录中记录以所述缓存块为分支目标的分支源缓存块的地址;
在置换所述缓存块时,用所述缓存块的所述低一存储层次地址替换所述控制流信息中记录的所述缓存块的地址。
17.如权利要求12所述的方法;其特征在于:
查询所述控制流信息以确定一个低存储层次缓存块中内容的相应高存储层次缓存块的地址;
置换所述相应高存储层次缓存块以减低存储层次缓存块的关联度。
18.如权利要求12所述的方法;其特征在于:
置换与其他缓存块没有关联的缓存块。
19.一种信息处理方法,其特征在于:
所述缓存器向所述处理器核推送指令供处理器核执行。
20.如权利要求19所述的方法其特征在于,包括:
步骤A:所述处理器核向所述缓存系统提供分支判断;
步骤B:所述缓存器审查其中存储的指令,提取并存储指令的控制流信息;
步骤C:所述缓存器根据所述控制流信息及所述分支判断向所述处理器核推送指令供所述处理器核执行。
21.如权利要求19所述的方法,其特征在于:
所述处理器核向所述缓存系统提供间接分支指令的基地址;
所述缓存器根据所述基地址产生间接分支目标地址,向所述处理器核推送间接分支指令供处理器核执行。
22.如权利要求19所述的方法,其特征在于:
由循迹器提供缓存器地址寻址所述缓存器向所述处理器核推送指令;
按线程存储所述循迹器中的及所述处理器核中的寄存器状态;
按线程将所述存储的寄存器状态与所述循迹器及所述处理器核中的状态互换以进行线程切换。
23.如权利要求19所述的方法,其特征在于:
所述缓存系统以主存储器为最低层次缓存;
所述主存储器由缓存地址寻址。
24.如权利要求23所述的方法,其特征在于:
所述缓存由实地址寻址;
所述缓存系统不进行虚实地址转换。
25.如权利要求19所述的方法,其特征在于:
所述主存储器由非易失性存储器与易失性存储器共同组成;
所述易失性存储器作为非易失性存储器的缓存。
26.如权利要求19所述的方法,其特征在于:
所述缓存器中各存储层次中的存储块以树状组织;
所述不同存储层次中的所述存储块以映射关系相联系。
27.如权利要求26所述的方法,其特征在于:
所述映射关系可以是从低存储层次向高存储层次映射的正向映射;
所述映射关系可以是从高存储层次向低存储层次映射的逆向映射。
28.如权利要求27所述的方法,其特征在于:
将一个所述缓存块的高层地址逆向映射成低层缓存地址;
将所述低层缓存地址与目标偏移量相加获得下一数据装载的低层缓存地址;
将所述目标低层缓存地址正向映射为下一数据装载高层缓存地址。
29.如权利要求28所述的方法,其特征在于:
以所述下一数据装载高层缓存地址在所述处理器请求之前从缓存中取得数据;
所述数据随相应数据访问指令向所述处理器推送。
30.如权利要求28所述的方法,其特征在于:
所述目标偏移量由相关指令之后的反向跳转的分支指令的分支判断结果选择。
CN201510267964.7A 2015-04-23 2015-05-20 一种基于指令和数据推送的处理器系统和方法 Pending CN106201914A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/568,715 US20180088953A1 (en) 2015-04-23 2016-04-22 A processor system and method based on instruction and data push
PCT/CN2016/080039 WO2016169518A1 (zh) 2015-04-23 2016-04-22 一种基于指令和数据推送的处理器系统和方法
TW105112791A TW201638774A (zh) 2015-04-23 2016-04-25 一種基於指令和資料推送的處理器系統和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510201436 2015-04-23
CN2015102014361 2015-04-23

Publications (1)

Publication Number Publication Date
CN106201914A true CN106201914A (zh) 2016-12-07

Family

ID=57419024

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201510233007.2A Pending CN106201913A (zh) 2015-04-23 2015-05-06 一种基于指令推送的处理器系统和方法
CN201510267964.7A Pending CN106201914A (zh) 2015-04-23 2015-05-20 一种基于指令和数据推送的处理器系统和方法
CN201610188651.7A Pending CN106066787A (zh) 2015-04-23 2016-03-21 一种基于指令和数据推送的处理器系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510233007.2A Pending CN106201913A (zh) 2015-04-23 2015-05-06 一种基于指令推送的处理器系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201610188651.7A Pending CN106066787A (zh) 2015-04-23 2016-03-21 一种基于指令和数据推送的处理器系统和方法

Country Status (3)

Country Link
US (1) US20180088953A1 (zh)
CN (3) CN106201913A (zh)
TW (1) TW201638774A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107689984A (zh) * 2017-07-27 2018-02-13 上海壹账通金融科技有限公司 消息推送方法、装置、计算机设备和存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102151180B1 (ko) * 2017-11-20 2020-09-02 삼성전자주식회사 효율적인 가상 캐시 구현을 위한 시스템 및 방법
US10877890B2 (en) * 2018-06-01 2020-12-29 Intel Corporation Providing dead-block prediction for determining whether to cache data in cache devices
GB2584268B (en) * 2018-12-31 2021-06-30 Graphcore Ltd Load-Store Instruction
CN109783143B (zh) * 2019-01-25 2021-03-09 贵州华芯通半导体技术有限公司 用于流水线指令流的控制方法和控制设备
CN110007966A (zh) * 2019-04-10 2019-07-12 龚伟峰 一种降低内存读取乱序的方法
CN115034376B (zh) * 2022-08-12 2022-11-18 上海燧原科技有限公司 神经网络处理器的批量标准化处理方法及存储介质
CN116521577B (zh) * 2023-07-03 2023-10-13 太初(无锡)电子科技有限公司 对分支预测失败的指令缓存快速处理的芯片系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US20080229009A1 (en) * 2007-03-14 2008-09-18 Gaither Blaine D Systems and methods for pushing data
CN101697146A (zh) * 2009-10-29 2010-04-21 西北工业大学 嵌入式处理器片内指令和数据推送装置
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
CN102141905B (zh) * 2010-01-29 2015-02-25 上海芯豪微电子有限公司 一种处理器体系结构
CN103984637A (zh) * 2013-02-07 2014-08-13 上海芯豪微电子有限公司 一种指令处理系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282928A1 (en) * 2006-06-06 2007-12-06 Guofang Jiao Processor core stack extension
US20080229009A1 (en) * 2007-03-14 2008-09-18 Gaither Blaine D Systems and methods for pushing data
CN101763249A (zh) * 2008-12-25 2010-06-30 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
CN101697146A (zh) * 2009-10-29 2010-04-21 西北工业大学 嵌入式处理器片内指令和数据推送装置
CN104424129A (zh) * 2013-08-19 2015-03-18 上海芯豪微电子有限公司 基于指令读缓冲的缓存系统和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
喻明艳 等: "分支指令特性与分支预测器的性能研究", 《微电子学与计算机》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107689984A (zh) * 2017-07-27 2018-02-13 上海壹账通金融科技有限公司 消息推送方法、装置、计算机设备和存储介质
CN107689984B (zh) * 2017-07-27 2020-02-07 深圳壹账通智能科技有限公司 消息推送方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN106201913A (zh) 2016-12-07
TW201638774A (zh) 2016-11-01
US20180088953A1 (en) 2018-03-29
CN106066787A (zh) 2016-11-02

Similar Documents

Publication Publication Date Title
CN106201914A (zh) 一种基于指令和数据推送的处理器系统和方法
CN104424129B (zh) 基于指令读缓冲的缓存系统和方法
US9141553B2 (en) High-performance cache system and method
CN103620547B (zh) 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
CN103984526B (zh) 一种指令处理系统及方法
CN102841865A (zh) 高性能缓存系统和方法
CN100555247C (zh) 在多核/多线程处理器中高速缓存的公平共享
CN104077113A (zh) 一种无锁并发消息处理机制的实现方法
US9785443B2 (en) Data cache system and method
US20180246718A1 (en) A system and method for multi-issue processors
CN102640124A (zh) 用于数据流的储存感知预取
CN104978282A (zh) 一种缓存系统和方法
CN101918925B (zh) 用于处理器的高关联性高速缓存的第二次机会取代机制
CN103513958B (zh) 高性能指令缓存系统和方法
CN103513957A (zh) 高性能缓存系统和方法
JPH1196074A (ja) 交換アルゴリズム動的選択コンピュータシステム
CN104731719A (zh) 一种缓存系统和方法
US20140025891A1 (en) Relaxed coherency between different caches
CN103176914B (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
KR20160033651A (ko) 상이한 인덱싱 방식을 사용하는 1차 캐시와 오버플로 캐시를 갖는 캐시 시스템
US7996632B1 (en) Device for misaligned atomics for a highly-threaded x86 processor
US6557078B1 (en) Cache chain structure to implement high bandwidth low latency cache memory subsystem
CN104424132A (zh) 高性能指令缓存系统和方法
TWI636362B (zh) 高性能快取方法和裝置
CN108139975A (zh) 用于用分割索引对高速缓存进行寻址的系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 201203 501, No. 14, Lane 328, Yuqing Road, Pudong New Area, Shanghai

Applicant after: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd.

Address before: 200092, B, block 1398, Siping Road, Shanghai, Yangpu District 1202

Applicant before: SHANGHAI XINHAO MICROELECTRONICS Co.,Ltd.

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20161207