Send As SMS

2005-07-27

CPU的一点想法

1、超线程结构设计。
     整个CPU有N套流水线、寄存器和执行单元,可以同时执行多个线程。为了简化CPU结构,我们不再单条流水线内做太多优化,而是一个近可能简单的RISC 结构。在一条流水线上,不采用超标量的技术和复杂的预测、并发支持。近可能的保证大部分的RISC指令可以在一个周期内完成。
通过多线程来提高整个CPU执行单元的并发能力。

2、寄存器设计
     32个64位通用寄存器,32个64位浮点寄存器。在指令中,一个寄存器近占5位。部分寄存器保留作为特殊用途,如0/1等常数,时钟周期计数器等。
     寄存器数量不用太多(因为每个线程内的并发要求很低),X86近提供8个通用寄存器都可以工作得很好。

3、指令设计。
     大部分的指令具有非常一致的规格,32位,3个寻址部分,遵循RISC规则,将访问内存的操作独立到load/store指令中。也支持复杂的指令,复杂 指令将由共享的执行单元来完成,比如说,可以有一个MMX的执行单元、一个3D的执行单元。而RISC指令的执行单元则基本上每个线程独立的。这样既可以 使得具有很高的通用计算能力,也可以根据需要扩展CISC执行单元。CISC执行单元不再有相应的寄存器。

4、堆栈设计。
    每个执行线程内有一个128字的堆栈Cache,对基于SP寄存器的操作,首先在此Cache中进行命中。这可以让CPU队大部分的local数据以寄存 器的方式进行直接访问。堆栈Cache是与内存同步的,随着函数的调用、返回,CPU自动的进行Cache的维护。
    
5、Cache。

6、系统采用64位的统一的地址空间,支持虚拟内存,但虚拟内存仅仅是将外部内存作为物理内存的一个后备,而不再为不同的任务分割不同的地址空间。每一个 任务都有一个段寄存器,所有的偏移是相对于该段寄存器的。系统共享一个统一的TLB(逻辑地址-物理地址映射)。每一个段的大小不可变化。对小任务,可以 是4M,16M,64M,256M,1G, 4G, 16G, 64G,256G,1T等值。缺省的是256M,可以满足大部分的任务要求。通过多个任务的协作来提高整个系统的能力。

7、对Java虚拟机的支持。
绝大部分的Java指令是通过软件JIT的方式编译成为RISC指令执行的,但系统也提供一些高层的服务,这些服务是放在一个称之为JVM的执行单元中,可以在Java指令编译时选择使用。CPU上可以提供一定数量的Java执行单元。

0 Comments:

张贴评论

<< Home