- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
以下源程序可生成两种不同的代码,优化的代码可避免Load阻塞 a = b + c; d = e – f; 假定 a, b, c, d ,e, f 在内存 编译器优化指令顺序解决数据冒险 Fast code: lw $2, b lw $3, c lw $5, e add $1, $2, $3 lw $6, f sw $1, a sub $4, $5, $6 sw $4, d Slow code: lw $2, b lw $3, c add $1, $2, $3 sw $1, a lw $5, e lw $6, f sub $4, $5, $6 sw $4, d 调整后 编译器的优化很重要! 如果硬件不支持阻塞处理的话,则编译器可以将顺序调整和插入NOP指令结合起来,在找不到可插入的指令时,插入NOP指令! 编译器优化以避免阻塞的情况调查 由此可见,优化调度后load阻塞现象大约降低了1/2~1/3 编译器优化指令顺序解决控制冒险 基本思想:把分支指令前面的与分支指令无关的指令调到分支指令后面执行,以填充延迟时间片(也称分支延迟槽Branch Delay slot),不够时用nop填充 如何对以下程序段进行分支延迟调度?(假定时间片为2) 调度后,无需在硬件线路中阻塞branch指令后面指令的执行 lw $1, 0($2) lw $3, 0($2) add $6, $4, $2 beq $3, $5, 2 add $3, $3,$2 sw $1, 0($2) …… 调度后可能带来其他问题:产生新的load-use数据冒险 调度后 lw $3, 0($2) add $6, $4, $2 beq $3, $5, 2 lw $1, 0($2) nop add $3, $3,$2 sw $1, 0($2) 本章小结 CPU的基本功能是周而复始地执行指令,并处理异常和中断。 CPU最基本的部分是数据通路和控制单元 数据通路(datapath)中包含组合逻辑元件和存储信息的状态元件。 组合逻辑(如加法器、ALU、扩展器、多路选择器以及状态元件的读操作逻辑等)用于对数据进行处理; 状态元件包括触发器、寄存器和存储器等,用于对指令执行的中间状态或最终结果进行存储。 控制单元(control unit):对取出的指令进行译码,与指令执行得到的条件标志或当前机器的状态、时序信号等组合,生成对数据通路进行控制的控制信号。 指令执行过程主要包括取指、译码、取数、运算、存结果。 现代计算机的数据通路都采用流水线方式实现,将每条指令的执行过程分解成功能段相同的几个流水段。流水线方式下,同时有多条指令重叠执行,因此程序的执行时间比串行执行方式下缩短很多。 Before we go any further, let’s step back for a second and take a look at the big picture. All computer consist of five components: (1) Input and (2) output devices. (3) The Memory System. And the (4) Control and (5) Datapath of the Processor. Today’s lecture covers the datapath design. In the next lecture, I will show you how to design the processor’s control unit. +1 = 5 min. (X:45) Based on the Register Transfer Language examples we have so far, we know we will need the following combinational logic elements. We will need an adder to update the program counter. A MUX to select the results. And finally, an ALU to do various arithmetic and logic operation. +1 = 30 min. (Y:10) Based on the Register Transfer Language examples we have so far, we know we will need the following combinational log
文档评论(0)