5.1概述
在第4章中,我们看到一台计算机的性能由三个关键因素决定:指令数目、时钟周期和每条指令所需时钟周期数(CPI)。我们在第2、3章学习的编译器和指令集系统决定了一个程序所需的指令数目。而处理器的实现方式则决定了时钟周期长度和每条指令所需的时钟周期数。在本章中,我们为MIPS指令系统的两种不同实现方式建立数据通路和控制单元。
本章阐述了实现一个处理器所涉及的原理和技术。本节对整章内容进行了高度抽象和简单概括,后面的各节分别介绍如何建立数据通路,如何设计一个能够执行简化MIPS指令集的处理器,最后引出实现类似IA-32的复杂指令集所必需的概念。
对于渴望了解如何用硬件实现各种指令的读者而言,5.3和5.4节提供了所需的补充材料。这两章应当做深入阅读。
本章各节覆盖了现代硬件实现的一般方法,也包括非常复杂的处理器。这些章节还解释了有限状态控制的基本原理及其不同实现方法,包括微程序实现方式。那些有兴趣深入了解处理器及其性能的读者会发现5.4和5.5节很有用。5.7节介绍微程序设计,这是一种用来实现负载控制机制的方法;在5.8中可以看到如何使用硬件设计语言和CAD工具来进行硬件实现。
5.1.1MIPS基本实现
首先来看我们要实现的核心MIPS指令集系统的一个子集:
--存储访问指令 lw和sw
--算数逻辑指令 add、sub、and、or和slt
--跳转指令 beq和j
在讨论此实现时,我们将会看到指令集如何在多个方面对具体实现方式产生的影响,以及不同实现策略是如何影响时钟速率和机器CPI值的。许多在第四章介绍的关键的设计原理,如加快常用操作的速度和简单来自规整的指导思想,在这个过程中都将得到体现。并且,在本章及下一章中用于实现MIPS子集的大多数概念与设计其他的多数计算机的基本思想是一致的,这包括从高性能服务器到通用微服务器到嵌入式处理器等,而后者将越来越广泛地应用在从VCR到汽车等各种产品中。
5.1.2处理器实现概述
第2,3章介绍了MIPS的核心指令,包括整体算数逻辑指令、存储访问指令及分支指令。这些指令的实现过程大致相同,而从具体的指令类型无关。每条指令执行的前两个步骤是一样的:
(1)根据程序计数器(PC)从内存中取出指令,PC指向存放该指令的地址。
(2)通过指令字段的内容,选择读取一个或两个寄存器。对于取字指令,只需读取一个寄存器,而其他大多数指令则要求读取两个寄存器。
这两步之后,为完成指令而进行的操作将取决于具体的指令类型。幸运的是,对三种指令类型的每一种而言,其动作大致相同而与具体操作码无关。
即使是不同类型的指令,也有一定的共性。例如,所有类型的指令在读取寄存器后,都要使用算数逻辑单元(ALU)。存储指令用ALU计算地址,算术逻辑指令用来执行运算,分支指令用ALU进行比较。可以看出,指令的简洁和规整使许多指令的执行很相似,因而简化了实现过程。
使用ALU之后,不同类型的指令需要进行不同的操作。存储访问指令需要对存储单元进行读出或写入而访问存储器。算数逻辑指令需要将ALU产生的数据写回寄存器中。而分支指令会根据比较的结果,决定是否需要更改下一条指令的地址。
第一,图5-1显示某些单元的数据来雨阿奴于两个不同的源头。例如,写入PC的值可能从两个加法器中任一个得到,还有写入寄存器堆的数据可能来源于ALU或者内存。实际上,这些数据线不可能简单地连在一起;必须增加器件用来从多个数据源中选择一个传输给目的单元。虽然这个选择设备称为数据选择器更合适,它还是同城称为多路复用器。多路复用器根据空盒子信啊的设置从多个输入中进行选择。
第二,图中有些单元必须根据指令的类型进
处理器实现与数据通路设计

本章探讨了计算机处理器的实现,重点关注MIPS指令系统的简化实现。内容涵盖了数据通路的设计,包括指令取、算数逻辑操作、存储访问和分支控制。通过分析R型、存储和分支指令,展示了如何构建数据通路并实现ALU控制。多周期实现方案被提出以优化性能,避免单周期设计的效率问题。此外,还讨论了控制单元的设计,以及如何根据指令字段分配功能单元的使用。
最低0.47元/天 解锁文章
3999

被折叠的 条评论
为什么被折叠?



