计算机体系结构方面的一些书(初级)

  1. 计算机组成和设计:硬件/软件接口(第2版)
    http://www.china-pub.com/computers/common/info.asp?id=15792
    好书,但有的地方说的太简单.

  2. 计算机体系结构量化研究方法
    http://www.china-pub.com/computers/common/info.asp?id=14
    N好,比上一本深入

  3. 计算机组成(原书第5版)
    http://www.china-pub.com/computers/common/info.asp?id=20641
    流水线和功能单元比1详细些


  4. 结构化计算机组成(原书第四版
    http://www.china-pub.com/computers/common/info.asp?id=4893

  5. 计算机系统组成与体系结构
    http://www.china-pub.com/computers/common/info.asp?id=4788
    详细的RTL设计

  6. 现代处理器设计——超标量处理器基础
    http://www.china-pub.com/computers/common/info.asp?id=18753


  7. 网络处理器与网络系统设计
    http://www.china-pub.com/computers/common/info.asp?id=20258
    intel的ixp与strongarm

  8. CPU/SOC及外围电路应用设计——基于FPGA/CPLD
    http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BF05762854

  9. Vector Game Math Processors

  10. book on processor design
    http://systems-engineering.argospress.com/books-procesdesign.htm
  11. see mips run 中英版 http://www.xtrj.org/smr/
  12. 一个教案 http://hanlin2.hbu.edu.cn/cmc/dzja/xtjg/index.htm
  13. 关于skyeye的结构的文章 http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s2/index.shtml

    读书笔记:
    2004年10月12日10:56:00
    cpu的发展,scalar->superscaler->vector->parrallel
    1.流水线,经典DLX(计算机体系结构量化接近)的5步流水线IF->ID->EX->MEM->WB
    流水线的问题:hazard[structure(resource),data,control],DLX中必然的structure(resource) hazard,当程序内存和数据内存在同一个BANK内时,IF和MEM段分别是读指令和写数据,这样同时访问内存造成冲突,解决方法是分开的指令CACHE和数据CACHE,但要求内存带宽扩大一倍。在data hazard中的结构转发(passby?)ID要求读register,WB要求写register,当流水线充分后都是在一个时钟周期中,解决方法为前半周期读,后半周期写。当后一个指令依赖前一个指令的结果时(前一个指令的结果在WB阶段才回写register)出现数据冲突,解决方法为旁路,就是ALU的结果总是反馈回ALU,并且在流水各个阶段有段间流水积存器。当是内存操作数时data hazard的不可避免,control hazard的延迟与指令调度,control hazard的4中解决方法,1直接在ID时停顿一个周期,2总是预测分支失败,就是直接取下条指令,如果分之成功则把IF/ID积存器清空。3总是预测分之成功,但对先产生结果后产生分支地址不合适。4延迟执行,加入延迟槽。
    2.向量处理器对编译器的挑战,缺点是对内存的吞吐量要求变大,因为同时处理多个数据。
    3.superscalar/vliw单周期多发射(issue)处理器,具有与向量处理器同样的吞吐率
    supercalar是通过在指令流水线中前后寻找,vliw是通过单周期发射宽指令在多个功能单元执行的,但由编译器或者程序员决定指令打包。ti的C55中的并行指令有点象vliw也是在一个周期发射多个指令,同样由程序员负责并行指令的编写。而mmx的操作有点象向量操作,但又是superscalar CPU?SIMD有点类似于vector.MIMD有点类似于vliw.奔腾与DSP的很大区别也许是是否支持指令并行,奔腾只能通过MMX指令来进行单指令多数据这种向量操作,而不可以单周期发射多指令,DSP刚好相反,也不知道这样理解对不对。
    3.processor 并行.同步/异步,不懂
    4.memory hierarchy,尽量避免内存读写(cache)或者读写时干别的事(tolerance)
    一段程序对cache的优化
DO I = 1, N
DO J 
= 1, M
A(I) 
= A(I) + B(J)
ENDDO
ENDDO
假如一个LRU的cache,如果M足够大,就会在每个I循环时丧失B的cache,假如象下面那样:
DO JJ = 1, M, L
DO I 
= 1, N
DO J 
= JJ, JJ+L-1
A(I) 
= A(I) + B(J)
ENDDO
ENDDO
ENDDO

会丧失NM/L次的A cache,但不会丧失NM次的B cache.
2004年10月18日10:20:34

1.重温了一下superscalar,超标量也就是在单周期内执行多个指令,这是用以前的流水线无法达到的,以前的流水线是利用CPU中多个功能部件,例如取指令,译码读源操作数,积存器堆,ALU,这些功能单元的并行执行来实现的。但superscalar类似于有两个ALU,或者乘法器的并行。
2.流水线的延迟槽,延迟槽的大小为跳转指令延迟的时间,与流水线的段数有关.,可用于loop优化,还没搞明白.
3.多总线,多总线对于流水线很重要,例如假如register file只有一个写端口,当流水线出现延迟前后两阶指令都要访问register file时会出现结构hazard,可有多个读端口.这是否是CPU都有多个不同register file的原因?

posted on 2004-09-27 09:39  embed  阅读(2523)  评论(0编辑  收藏  举报

导航