掌桥专利:专业的专利平台
掌桥专利
首页

一个用于时分复用流水线处理器的指令或数据功能存储器的方法

文献发布时间:2023-06-19 11:52:33


一个用于时分复用流水线处理器的指令或数据功能存储器的方法

技术领域

本发明涉及处理器结构领域,尤其是细粒度多线程处理器的存储器的组织结构。

背景

在目前的细粒度多线程处理器,通过时分复用的方法访问固定容量的程序存储器或数据存储器,本发明通过组合小容量的子存储器生成程序存储器或数据存储器,还可以动态调整存储器的大小,实现对存储器容量与带宽最大化效率使用,通过精细控制子存储器的时钟和供电,进一步节省功耗。

发明内容

一个用于时分复用流水线处理器的指令或数据功能存储器的方法,特征为:处理器使用一个多级流水线,流水线的各级流水部件在同一个流水线时钟周期执行不同线程的操作;所有复用该流水线的线程根据其切入流水线的时间规律,分成多个线程组,每个线程组内的线程不会同时出现在流水线上;不同线程组支持的指令集可以相同也可以不同;指令或数据功能存储器使用多个容量相同或不同的子存储器组合而成;同一个指令或数据功能存储器的子存储器不会同时响应不同的线程组;所有线程组内的所有线程通过时分复用方式访问一个或多个指令或数据功能存储器的子存储器;子存储器访问时隙未被完全被占用时,其空闲访问时隙可以留给外设或其他设备访问,也可以保持空闲。

一个典型的分组方法为:由于处理器的流水级数为N,一个线程的一条指令需要N个流水时钟周期才能完成,所以任何线程的指令执行速度最大值为流水线时钟的N分之1,线程切入流水线的时刻的流水线时钟计数值除以N后的余数相同的线程不会同时出现在流水线上,所以它们对指令或数据功能存储器的访问也永远不会同时出现。把这些永远不会同时出现在流水线上的线程归为一组,同一个指令或数据功能存储器的子存储器不会同时响应不同的线程组,同一个线程组内的线程由于不同时出现在流水线上,也不会同时访问同一个子存储器。

指令存储器和数据存储器共享同一物理存储器集合,一个物理子存储器可以按需静态或动态的分配为指令存储器功能或者数据存储器功能,用若干个容量相同或不同的子存储器组合而成最终的指令或数据功能存储器可以更加有效的利用存储器。

通过提高子存储器读写时钟的方法,例如存储器工作在2倍流水线时钟,可以提供更大的访问带宽给线程,使一个线程在一个流水线时钟内可以读写更多的数据,或者可以在一个流水线时钟内被2个线程组的线程使用,或被其他外设访问。

不同线程组内的线程支持的指令集可以不相同,例如:简单功能线程组的线程支持的指令只需要访问1次指令存储器和1次数据存储器,而一些复杂的线程组的线程需要访问2 次指令存储器和3次数据存储器,所以每个线程组的线程对指令或数据存储器的带宽需求并不相同,针对不同的带宽需求,可以给予不同的线程组对指令或数据功能存储器访问的不同的带宽或时间片,必要时,可以由某个线程组独占一个或多个子存储器。

在子存储器较多的情况下,由于流水线不会同时访问所有的子存储器,对于在某个时间没有被访问的子存储器,虽然可以一直提供其时钟,但也可以不提供该时间的时钟信号,达到省电目的,进一步还可以控制该子存储器部分或全部信号线值不动或少动,同样可以省电。

此外,子存储器在一些情况下会超过用户的实际需要,例如有8个128字节容量的子存储器,用户只需要6个子存储器就满足需要,那么对于没有使用的2个闲置子存储器,虽然可以一直正常供电,但也可以降低其供电电压或者直接关掉其供电达到省电目的,如果6个用户使用的子存储器中的一个或多个在一定的时间内可以预期没有访问的需要但是其存储的数据需要保持,也可以降低这些没有访问需要的子存储器的供电,使之只起到保持数据的功能即可。需要注意的是,一个子存储器是否被使用或者访问,可以是动态的,而非一成不变。

在一般情况下下,单端口存储器的面积与功耗均优于多端口存储器,在本发明中,使用单端口存储器尤其是使用单端口的静态随机存储器(SRAM)可以在满足访问带宽的前提下节省电路面积。

附图说明

图1是子存储器基本结构图

图2是子存储器处于2倍流水线时钟频率工作结构图

图3是子存储器线程组间不平衡时分复用结构图

图4是子存储器内部空间划分图

图5是子储器分组结构图

图6是子存储器基本时序图

图7是子存储器时钟信号图

图8是子存储器可控时钟信号图

图9是子存储器处于2倍流水线时钟频率时序图

图10是子存储器不平衡时分复用时序图

具体实施方式

通常情况下,所公开的实施例在下面的说明中,给出了具体的细节,以便于透彻理解这些实施例。但是,本领域技术人员应当理解的是,这些实施例也可以不用这些具体细节来实现。尤其是关于流水线和存储器以及复用器等功能性部件,实施例中的方法只是为了说明意图而选用的特例技术,这些实施例可以选择其他公知方法。

第一实施例

图1说明子存储器基本组合结构与工作形式,包含:

位于第1级流水线的取指部件101,工作在流水线时钟;

位于第2级流水线的译码部件102,工作在流水线时钟;

位于第3级流水线的执行部件103,工作在流水线时钟;

位于第4级流水线的写回部件104,工作在流水线时钟;

子存储器1部件105是一个单端口静态随机存储器(SRAM),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为指令存储器工作;

子存储器2部件106是一个单端口静态随机存储器(SRAM),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为指令存储器工作;

子存储器3部件107是一个单端口静态随机存储器(SRAM),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为数据存储器工作;

子存储器4部件108是一个单端口静态随机存储器(SRAM),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为数据存储器工作;

该流水线在且只在位于第1级流水线的取指部件101,访问指令存储器。通过复用选择器109读写被选中的单端口静态随机存储器。

该流水线在且只在位于第3级流水线的执行部件103,访问数据存储器。通过复用选择器109读写被选中的单端口静态随机存储器。

图6是第一实施例所对应的时序图。对于存储器1部件105,其在流水线时钟上的工作时序为,第1周期被线程组1访问,第2周期空闲,第3周期被线程组3访问,第4周期被线程组4访问,第5周期空闲,第6周期空闲,第7周期空闲,第8周期被线程组4访问。其余存储器同理如图。

图7是第一实施例所对应的子存储器时钟信号图。对于所有子存储器,一直有时钟提供,无论其是否被访问。

图8是第一实施例所对应的子存储器可控时钟信号图。对于存储器1部件105,其在时钟上的脉冲为,第1周期被线程组1访问,有时钟,第2周期空闲,无时钟,第3周期被线程组3访问,有时钟,第4周期被线程组4访问,有时钟,第5周期空闲,无时钟,第6 周期空闲,无时钟,第7周期空闲,无时钟,第8周期被线程组4访问,有时钟。其余指令或数据功能存储器同理如图。

第二实施例

图2说明子存储器处于2倍流水线时钟频率工作模式,包含:

位于第1级流水线的取指1部件201,工作在流水线时钟;

位于第2级流水线的取指2部件202,工作在流水线时钟;

位于第3级流水线的译码1部件203,工作在流水线时钟;

位于第4级流水线的译码2部件204,工作在流水线时钟;

位于第5级流水线的执行1部件205,工作在流水线时钟;

位于第6级流水线的执行2部件206,工作在流水线时钟;

位于第7级流水线的写回1部件207,工作在流水线时钟;

位于第8级流水线的写回2部件208,工作在流水线时钟;

子存储器1部件209是一个单端口存储器,工作在2倍流水线时钟频率,通过复用选择器213连接到流水线;

子存储器2部件210是一个单端口存储器,工作在2倍流水线时钟频率,通过复用选择器213连接到流水线;

子存储器3部件211是一个单端口存储器,工作在2倍流水线时钟频率,通过复用选择器213连接到流水线;

子存储器4部件212是一个单端口存储器,工作在2倍流水线时钟频率,通过复用选择器213连接到流水线。

该流水线在且只在位于第1级流水线的取指1部件201,位于第2级流水线的取指2部件202访问指令功能存储器,位于第5级流水线的执行1部件205,位于第6级流水线的执行2部件206访问数据功能存储器。流水线部件通过当前运行的线程所访问的地址来定位具体的指令或数据功能子存储器,然后通过复用选择器213读写被选中的指令或数据功能存储器。同一个子存储器可以被两个流水部件在同一个流水线时钟访问,但是子存储器的时钟是流水线时钟的两倍,所以可以依次响应两个流水线部件的访问,达到同时服务两个线程组的功能。

图9是第二实施例所对应的时序图。对于子存储器1部件209,其在流水线时钟上的工作状态为,第1周期只被线程组1访问,第2周期被线程组2和线程组1访问,第3周期被线程组3访问和线程组2,第4周期线空闲,第5周期被线程组5访问,第6周期空闲,第 7周期被线程组7访问,第8周期线程组8和线程组7访问。其余存储器同理如图。在本实施例中,部分子存储器并未完全被占用,其空闲时间可以给外设或其他设备访问或者在其空闲时间不为其提供时钟。

第三实施例

图3说明子存储器线程组间不平衡时分复用结构,包含:

位于第1级流水线的取指1部件301,工作在流水线时钟;

位于第2级流水线的取指2部件302,工作在流水线时钟;

位于第3级流水线的译码1部件303,工作在流水线时钟;

位于第4级流水线的译码2部件304,工作在流水线时钟;

位于第5级流水线的执行1部件305,工作在流水线时钟;

位于第6级流水线的执行2部件306,工作在流水线时钟;

位于第7级流水线的写回1部件307,工作在流水线时钟;

位于第8级流水线的写回2部件308,工作在流水线时钟;

子存储器1部件309是一个单端口存储器,工作在流水线时钟频率,通过复用选择器 313连接到流水线;

子存储器2部件310是一个单端口存储器,工作在流水线时钟频率,通过复用选择器 313连接到流水线;

子存储器3部件311是一个单端口存储器,工作在流水线时钟频率,通过复用选择器 313连接到流水线;

子存储器4部件312是一个单端口存储器,工作在流水线时钟频率,通过复用选择器 313连接到流水线。

由于各个线程组支持的指令集不同,对于线程组1线程组4线程组6线程组7的线程,流水线可以在位于第1级流水线的取指1部件301,位于第2级流水线的取指2部件302访问指令功能存储器,位于第5流水线的执行1部件305,位于第6级流水线的执行2部件306 访问数据功能存储器。对于线程组2线程组3线线程组5线线程组8线线程,流水线只在位于第1级流水线的取指1部件301访问指令功能存储器,位于第5级流水线的执行1部件 305访问数据功能存储器。流水线部件通过当前运行的线程所访问的地址来定位具体的指令或数据功能子存储器,然后通过复用选择器313读写被选中的指令或数据功能存储器。由于子存储器都工作在流水线时钟,所以同一个子存储器不能有两个或以上流水部件访问,所以子存储器2部件310和子存储器4部件312只能被线程组1访问,可以通过软件对不同线程组的访问地址加以限制,来达到这个目的,也可以通过硬件对线程组的识别来达到这个目的。

图10是第三实施例所对应的时序图。对于子存储器4部件312,其在流水线时钟上的工作状态为,第1周期被线程组4访问,第2周期空闲,第3周期被线程组6访问,第4 周期线程组7访问,第5周期空闲,第6周期被线程组1访问,第7周期空闲,第8周期空闲。其余存储器同理如图。在本实施例中,部分子存储器并未完全被占用,其空闲时间可以给外设或其他设备访问或者在其空闲时间不为其提供时钟。

第四实施例

图4说明子存储器内部空间划分。

子存储器1部件401,存储器容量128字节,子存储器2部件402,存储器容量128字节,子存储器3部件403,存储器容量512字节,子存储器4部件404,存储器容量256字节。可以根据需要通过复用器405动态或静态分配指令和数据存储器容量,例如:子存储器 1为指令存储器128字节,其余为数据存储器896字节;子存储器1,子存储器2为指令存储器256字节,其余为数据存储器768字节;子存储器1,子存储器2,子存储器3为指令存储器768字节,其余为数据存储器256字节。

第五实施例

图5是子储器分组结构图。子存储器1部件501,只存储字节地址为偶数的指令内容,子存储器2部件502,只存储字节地址为奇数的指令内容,子存储器3部件503,只存储字节地址为偶数的数据内容,子存储器4部件504,只存储字节地址为奇数的数据内容。当线程访问字节地址0和字节地址1的指令时,由子存储器1部件501提供字节地址0的指令信息,由子存储器2部件502提供字节地址1的指令信息;当线程访问字节地址1和字节地址 2的数据时,由子存储器1部件501提供字节地址2的指令信息,由子存储器2部件502提供字节地址1的指令信息;由此可见,一个不管是否2字节地址对齐的2字节宽度的访问可以一次同时完成。同理,当线程访问字节地址5和字节地址6的数据信息时,由子存储器3 部件503提供字节地址6的数据信息,由子存储器4部件504提供字节地址5的数据信息;当线程访问字节地址6和字节地址7的数据信息时,由子存储器3部件503提供字节地址6 的数据信息,由子存储器4部件504提供字节地址7的数据信息;这种分组对非对齐地址的模式下或可以提供最快的访问速度。此外,对地址的分组还可以进一步的扩展,例如通过对地址除以4的余数情况分成4组,则可以进一步扩大访问的灵活性和带宽。

对所公开实施方式的先前的说明以使得任何所属技术领域的专业人员可以实施或者使用本发明。对本领域的技术人员而言可以很容易的对这些实施方式进行各种修改,并且在不脱离本发明的精神上、或者范围的情况下可以将在此定义的通用原理应用于其他实施方式。因此,并非意在将本发明限于在此显示的实施方式,而是应当同符合在此公开的原理和非常规设计的最宽范围相一致。

相关技术
  • 一个用于时分复用流水线处理器的指令或数据功能存储器的方法
  • 一个用于时分复用流水线处理器的快速访问存储器结构
技术分类

06120113084435