《计算机系统:系统架构与操作系统的高度集成》——3.6 控制单元设计的另一种选择

简介:

本节书摘来自华章计算机《计算机系统:系统架构与操作系统的高度集成》一书中的第3章,第3.6节,作者:(美)拉姆阿堪德兰(Ramachandran, U.)(美)莱希(Leahy, W. D.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 控制单元设计的另一种选择

我们来考虑处理器控制单元不同风格的实现。
3.6.1 微程序控制
在3.5节中,我们给出了微程序风格的控制单元设计。这种风格的确很优雅,也很简单且易于维护。使用微程序设计的好处是,控制逻辑就像ROM中的一段程序,因此非常易于维护。但是,微程序设计有两个潜在的低效之处。第一个与时间有关。为了在某个时钟周期中产生控制信号,需要向ROM提供一个地址,然后再经过一段称为访问时间的延迟后,控制信号才在数据通路上可用。这个时间代价发生在每个时钟周期的关键路径上,因此成为了性能损失的一个原因。然而,通过预取,即在一条指令执行时提前取出下一条指令,这个时间代价可以被屏蔽。第二个与空间有关。前面小节中给出的设计属于微程序设计中的水平微码风格,在这种设计中整个控制通路中的每个控制信号都与微指令中的一位相对应。从之前讨论的情况来看,对于大多数微指令,这些位中的大部分都是0,只有少数为1,与该时钟周期所需的控制信号吻合。例如,在ifetch1中,只有DrPC、LdMAR、LdA是1,微指令中的其他位都是0。水平微码在空间上的低效可以通过采用一种称为垂直微码的技术来克服,而垂直微码与写汇编相类似。不同微指令中同一位的位置表示了不同的控制信号,这又依赖于每条垂直微指令中的操作码(OPCODE)字段。垂直编码更具技巧性,因为各条微指令中同一位的位置表示的控制信号需要互斥。
3.6.2 硬连线控制
我们仔细研究3.5节中设计的使用水平微码的ROM究竟表示了什么是有益的。它实际上是一个真值表,给出了数据通路所需要的所有控制信号。ROM的行表示状态,列表示的是函数(每一列对应一个控制信号)。基于前面对逻辑设计的介绍,读者应该知道如何合成每列所需要的最小布尔逻辑。这些逻辑函数比真值表更有效。
我们可以使用组合逻辑电路来实现控制信号对应的布尔逻辑函数。函数的功能就是在某个状态下给出的某些控制信号。
例如,DrPC的布尔函数可能是:
image

使用AND/OR门,或者像NAND/NOR这样的通用门,我们可以生成所有的控制信号。我们将这种类型的设计称为硬连线控制,因为控制信号都是使用组合逻辑电路来实现的(不容易修改,所以称为硬连线)。这样的设计在时间和空间上都很有效(不需要ROM查找的访问时间,也不需要为时钟周期内没有产生的控制信号浪费空间)。过去有一些反对者认为,因为使用随机逻辑来实现布尔函数,所以这将导致噩梦般的维护工作。
然而,可编程逻辑阵列(PLA)和现场可编程门阵列(FPGA)的出现使得这些反对苍白无力。例如,PLA将所需要的逻辑组织成二维阵列结构,从而让随机逻辑有了结构。我们在图3-31中给出了这种结构。
image

图3-31  PLA。左边的输入来自状态寄存器和影响处理器(如IR和Z寄存器)状态的数据通路元件。每个输出是输入的SUM-of-PRODUCT的结果,这些输出就是数据通路所需的控制信号
输出是驱动数据通路所需的控制信号(DrPC、DrALU等)。输入是处理器所处的状态(ifetch1、ifetch2等)和数据通路中产生的条件(IR和Z寄存器的内容等)。AND板中的每个门都获得所有的输入(在正确而完整的版本中是这样的)。类似地,OR板中的每个门也都获得AND板产生的所有结果。PLA之所以称为PLA,是因为它上面的逻辑可以通过选择哪些输入传送给AND板和OR板而“编程”。每个PLA输出都是逻辑乘的逻辑加(SUM-of-PRODUCT)的结果。逻辑乘(PRODUCT)是在AND板中实现的。逻辑加(ADD)是在OR板中实现的。这种设计将所有控制逻辑都集中在一起,就有了微程序设计的结构优势。同时,因为控制信号使用组合逻辑电路产生,所以它没有硬连线设计的不足。与随机逻辑的设计相比,它在空间的使用上稍微有些劣势,因为每个AND门的扇入数都与PLA的总输入数相同,而每个OR门的扇入数都与AND板中AND门的数量相同。无论如何,PLA的结构化优点和规则性远远超过了它的劣势,VLSI设计已经离不开它。
最近,FPGA变得非常流行,它用来为复杂的硬件设计迅速制造原型。FPGA其实是PLA的继承者,它含有逻辑元件和存储元件。这些元件之间的连接可以“现场”进行编程,FPGA正是由此得名。这样的灵活性使得设计上的缺陷更容易修正,甚至在部署之后依然如此,因此也提高了硬连线设计的可维护性。
3.6.3 在两种控制设计风格中选择
在这两种风格之间进行选择受到许多因素的影响。我们已经给出了两种控制风格的优势和劣势。也许由于FPGA的出现,许多针对硬连线控制可维护性的争论已经停止了。尽管如此,对于处理器的基本实现(即非流水线),或者对于复杂指令的实现(如x86体系结构中的那些),更倾向于使用微程序控制,因为它很灵活也很容易快速修改。另一方面,我们将在流水线处理器的有关章节中看到,高端流水线处理器的实现非常适合使用硬连线控制。表3-2总结了这两种设计思路的优劣。
image

相关文章
|
存储 缓存 安全
[笔记]深入解析Windows操作系统《二》系统架构
深入解析Windows操作系统《二》系统架构
1072 0
[笔记]深入解析Windows操作系统《二》系统架构
|
4月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
94 2
|
2月前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
73 6
|
弹性计算 Ubuntu Unix
阿里云服务器镜像系统怎么选?云服务器操作系统选择攻略
阿里云服务器镜像是什么?云服务器系统镜像怎么选择?阿里云百科以Web网站应用为例,常见的Web程序语言如PHP,PHP语言经典环境为LAMP或LNMP,建议选择Linux类操作系统,如CentOS Stream、Alibaba Cloud Linux等,另外如PERL、CGI、数据库MySQL、SQLite建议选择Linux镜像;如果是ASP/.NET,云服务器镜像建议选择Windows Server操作系统,如果是Access数据库,肯定也是要选择Windows Server镜像。
2857 0
阿里云服务器镜像系统怎么选?云服务器操作系统选择攻略
|
5月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发过程中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的多维策略,包括单元测试、集成测试、性能测试和安全测试。我们将分析每种测试方法的优势和局限性,并讨论如何将这些策略整合到一个全面的测试计划中,以提高软件的可靠性和安全性。文章还将提供实用的例子和最佳实践,帮助读者更好地理解和应用这些测试技术。
|
缓存 Unix 调度
[笔记]深入解析Windows操作系统《二》系统架构(一)
[笔记]深入解析Windows操作系统《二》系统架构
328 0
|
存储 安全 Unix
[笔记]深入解析Windows操作系统《二》系统架构(五)
[笔记]深入解析Windows操作系统《二》系统架构(五)
120 0
|
存储 安全 API
[笔记]深入解析Windows操作系统《二》系统架构(四)
[笔记]深入解析Windows操作系统《二》系统架构(四)
|
存储 缓存 安全
[笔记]深入解析Windows操作系统《二》系统架构(三)
[笔记]深入解析Windows操作系统《二》系统架构(三)
211 0
|
缓存 安全 Unix
[笔记]深入解析Windows操作系统《二》系统架构(二)
[笔记]深入解析Windows操作系统《二》系统架构(二)
127 0