硬连线控制器.ppt
这种逻辑电路是由门电路和触发器组成的复杂的树形网络,因此被称为硬连线控制器。这种结构缺陷使得硬接线控制器的设计和调试非常复杂且成本高昂。因此,硬连线控制器被微程序控制器取代。图 5.31 显示了硬连线控制器的结构框图。显然,硬接线控制器的基本原理可以概括为:一定的微操作控制信号时序信号与状态条件信号Bj的函数,即。,从指令流程图出发,我们可以确定指令周期内每个时刻必须激活的所有操作控制信号。用于硬接线实现的运行控制器中,通常,定时发生器除了产生差拍脉冲信号外,还应产生差拍电位信号。
5.6 硬连线控制器的基本思想 硬连线控制器是一种早期的计算机设计方法。 这种方法将控制组件视为生成专门的固定时序控制信号的逻辑电路,并且该逻辑电路被设计为使用最少的组件并实现最高的运行速度。 一旦构建了控制组件,就不可能在不重新设计和物理重新布线的情况下添加新的控制功能。 这种逻辑电路是由门电路和触发器组成的复杂的树形网络,因此被称为硬连线控制器。 当执行不同的机器指令时,指令的解释是通过激活一系列彼此差异很大的控制信号来实现的。 结果,控制器通常没有清晰的结构并且变得杂乱无章。 这种结构缺陷使得硬接线控制器的设计和调试非常复杂且成本高昂。 因此,硬连线控制器被微程序控制器取代。 但随着第四代机VLSI技术的发展,随机逻辑设计思想再次受到关注。 图 5.31 显示了硬连线控制器的结构框图。 逻辑网络有3个输入信号源:)指令操作码译码器的输出Im)定时发生器的定时信号,包括差拍电位信号M和差拍脉冲信号T。差拍电位信号为机器周期。 5.3节规定的(CPU周期)信号,节拍脉冲信号为时钟周期信号。 逻辑网络N的输出信号为微操作控制信号,用于控制执行部件。 还有一些信号根据条件变量改变时序发生器的计数顺序,以便跳过某些状态,从而缩短指令周期。 显然,硬接线控制器的基本原理可以概括为:一定的微操作控制信号时序信号(拍电位Mi,拍脉冲Tk)与状态条件信号Bj的函数,即(Im, Mi、Tk、Bj)。 该控制信号是利用门电路、触发器等多种器件采用组合逻辑设计方法来实现的。 当机器上电时,一定的运行控制信号在特定的指令和状态条件下,作用于一定序号的特定节拍电位和节拍脉冲时间间隔,从而激活这条控制信号线,控制执行部件。 ,从指令流程图出发,我们可以确定指令周期内每个时刻必须激活的所有操作控制信号。 例如,对于引起主存读操作的控制信号C3,当节拍电位M1=l时,在取指令时被激活; 当节拍电位M4=1时,取操作数时三个指令(LDA、ADD)也被激活。 此时指令译码器的LDA、ADD、AND输出均为1,因此C3的逻辑表达式可由下式确定: C3=M1+M4(LDA+ADD+AND) 一般来说,还必须考虑差拍脉冲和状态条件的约束,因此每个控制信号 Cn= 可以通过以下形式的逻辑方程确定 Cn =(MiTkBj 与微程序控制相比,组合逻辑控制速度更快。原因是:微程序控制中每条微指令都要从控制存储器中读取一次,影响速度,而组合逻辑控制主要依靠电路延时,因此,近年来,在一些超高速新型计算机结构中,组合逻辑已被广泛应用。用于硬接线实现的运行控制器中,通常,定时发生器除了产生差拍脉冲信号外,还应产生差拍电位信号。
由于一系列微操作必须在一个指令周期内依次执行,因此需要设置多个节拍电位进行计时。 例如,前面提到的5条指令的指令周期可以用下图表示。 由于同步工作方式,长指令和短指令都使用相同的周期时间。 这对于短指令来说是一种时间的浪费,同时也降低了CPU的指令执行速度,影响机器的速度指标。 为了改变这种情况,在设计短指令流时可以跳过某些节拍。 当然,在这种情况下,拍频信号发生器的电路会更加复杂。 拍频电位信号的产生电路与拍频脉冲产生电路非常相似。 它可以在差拍脉冲信号定序器的基础上生成。 它在运行过程中以循环方式工作,并与节拍脉冲保持同步。 在微程序控制器中,微操作控制信号由微指令产生并且可以重复使用。 在硬连线控制器中,某个微操作控制信号是由布尔代数表达式描述的输出函数产生的。 设计微操作控制信号的方法和过程是根据所有机器指令流程图找出产生相同微操作信号的所有条件,并将它们与适当的节拍电位和节拍脉冲结合起来,写出它们的布尔代数表达式并简化,然后用门或可编程器件实现。 为了防止遗漏,设计时可以按照信号在指令流程图中出现的顺序来写,然后进行汇总和简化。 特别要注意控制信号是电位有效还是脉冲有效。 如果脉冲有效,则必须为“与”相添加拍频脉冲信号。
如何兼容低版本浏览器
分为三部分
超文本标记语言
较低版本的浏览器无法识别新的 HTML5 元素。 如果您想兼容这些浏览器,您需要执行以下操作:
对于不可替换的元素,例如article、section、header、footer等,虽然低版本浏览器无法识别这些元素,但它们仍然会被渲染,但没有浏览器的默认样式。 因此,我们只需要在css中做一点处理,比如给它们全部添加display:block。对于可替换的元素,比如视频、音频等,这些元素在低版本浏览器中将没有任何功能,所以你需要使用条件注释并在低版本浏览器中使用兼容的做法。
CSS
对于 CSS 代码,低版本浏览器可能无法识别某些 CSS 属性,例如圆角边框、背景渐变、过渡动画等。但是,由于浏览器对无法识别的样式的处理方式是“直接丢弃,不影响后续渲染”,所以我们可以保持这个原则:尽量让它们兼容,但如果做不到,至少不会影响浏览。 根据这个原理,我们可以对CSS进行如下处理:
使用供应商前缀使它们尽可能兼容。对于某些样式,例如渐变、动画等,请使用 JS 代替。
JavaScript
对于JS代码,低版本浏览器无法识别H5 API,因此缺少一些新功能,例如本地存储、Web Worker等。不仅如此,低版本浏览器无法识别ES6的新语法,例如let、const 、async、await等。因此,处理JS兼容性问题只能具体情况具体分析。 通常,我们会使用以下两种方法来实现兼容:
模拟 API。 就是写一个和官方功能一样的API,弥补低版本浏览器API的不足。 典型的是ES5中有大量的数组API,并且这些API可以很容易地模拟。 编译。 一些新语法无法模拟。 源代码只能通过生产工具编译,所有新语法都将被删除。 如果新语法涉及特殊功能,则会转换为使用API。 一个典型的例子是async和await。 转换为生成器的函数调用。
在当今前端工程化时代,上述兼容性问题几乎都可以通过工程化来完成。 比如CSS可以依赖postcss平台完成兼容性处理,JS可以依赖babel平台完成兼容性处理。