Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2207929
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类: LINUX

2012-12-17 20:24:19

我这周阅读的内容是Execution Migration in a Heterogeneous-ISA Chip Multiprocessor这篇文章。我们采取分工阅读的方式,这篇文章里介绍了一个在异构指令集架构单芯片多处理器上的指令转移.下面介绍几个学得的知识点.

单芯片多处理器Chip multiprocessors,简称CMP),也指多核心。CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与CMP比较, SMT处理器结构的灵活性比较突出。但是,当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。目前,IBM Power 4芯片和Sun MAJC5200芯片都采用了CMP结构。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。

微处理器的指令集架构:电脑微处理器的指令集架构Instruction Set Architecture)常见的有三种:

复杂指令集运算Complex Instruction Set ComputingCISC

目前x86架构微处理器如IntelPentium/Celeron/XeonAMDAthlon/Duron/Sempron;以及其64位扩展系统的x86-64架构的Intel 64Intel Core/Core2/Pentium/XeonAMD64Phenom II/Phenom/Athlon 64/Opteron都属于CISC系列。主要针对的操作系统是微软的Windows。另外Linux,一些UNIX等,都可以运行在x86CISC)架构的微处理器。

精简指令集运算Reduced Instruction Set ComputingRISC

RISC这种指令集运算包括HPPA-RISCIBMPowerPCCompaq(被并入HP)的AlphaMIPS公司的MIPSSUN公司的SPARC等。目前只有UNIXLinuxMacOS等操作系统运行在RISC处理器上。

显式并行指令集运算Explicitly Parallel Instruction ComputingEPICEPIC乃先进的全新指令集运算,只有IntelIA-64架构的纯64位微处理器的Itanium/Itanium 2EPIC指令集运算的IA-64架构主要针对的操作系统是微软64位安腾版的Windows XP以及64位安腾版的Windows Server 2003。另外一些64位的Linux,一些64位的UNIX也可以运行IA-64EPIC)架构。

       超长指令字指令集运算VLIW

通过将多条指令放入一个指令字,有效的提高了CPU各个计算功能部件的

利用效率,提高了程序的性能

线程发生迁移的可能的原因

1)计算机能源状态的改变,当计算机变为低电操作状态时,程序会从高性能核心迁移到能源高效率核心。

2当一个拥有高优先级和高性能的新的进程进入到运行队列时,其他进程会转移到别的内核上。

3)如果一个进入了一个有不同计算需求的新阶段,进程可能会迁移到一个强烈支持新计算类型的核心。

4)如果一个芯片变得太热,那么在核心上的那片发热区上正在执行的程序可能会迁移到远离此核心。

迁移:在有迁移发生时,系统必须做出反映,通常要执行四个操作。

1.       改变页表映射核心

2.       更换页表映射代码。

3.       执行迁移,翻译到程序转换点。

4.       在新构架上执行转换程序状态。

堆的一致性:为了降低移位成本就必须修改内存。为了消除发现和定位所有的函数指针,函数体就应当被放在相同的虚拟地址里进入每一个ISA,也就意味着函数命令的定义在内存中也是一样的,大小也一样,虽然它们的虚拟地址一样但是他们的函数调用地址不同。堆的一致性不是必须的,因为指向堆的指针将会工作的非常正确在移位后由于堆对象在共享空间的地址是动态产生的,不是硬制的二进制代码。堆的一致性是有用的在确保移位后程序有一个准确的记录堆是否被利用。

栈的一致性: 栈对象的指针会固定在迁移过程中, 栈中有许多指针指向他们,移位的时候这些指针都会被修改假设这些对象没有放在一致的地址里。

阅读(557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~