2.1.4 现代计算机的设计原则(译)

自第一台RISC机器诞生后20余载,一些有利于计算机设计,指出了当前硬件技术状态的原则逐渐被接受。如果技术上发生了重大变革(比如,一种可以量产的处理器比当前CPU执行内存循环的速度快10倍),一切都要推倒重来。因此计算机的设计者应该时刻关注技术变化,它们有时会影响计算机各个组成部分之间的平衡。

尽管如此,新一代多功能CPU的设计者会尽力遵循某些设计原则,它们有时被称作RISC设计原则。虽然对某些外部限制,比如向后兼容一些已存在的体系结构,需要不时地做出妥协,但遵循这些原则是大多数设计者努力的目标。下面我们从这些原则中挑一些重要的讨论。

所有的指令都由硬件直接执行

所有的通用指令都由硬件直接执行。他们不会被解释成微指令。少一层解释给大多数指令提供了更快的速度。对实现CISC指令集的计算机来说,额外的(除了通用指令之外的指令)复杂指令会被分解,然后作为一系列微指令执行。这个额外步骤降低了机器的执行速度,但是对那些不太频繁执行的指令,还是可以接受的。

最大化输出指令的比例

现代计算机采取了很多小技巧来最大化性能,首先是尝试最大化每秒开始指令的数量。归根结底,如果你能每秒输出5亿条指令,你就构建了一个500-MIPS的处理器,无论完成这些指令需要花费多少时间。(MIPS表示每秒百万条指令。MIPS这个缩略词有两种解释。)本条原则指出,并行在性能提升上扮演重要角色,因为在短时间内输出大量缓慢的指令是完全可能的,只要能同时执行多条指令。

虽然指令总是按照程序的顺序执行,但它们不总是按照程序的顺序输出(因为执行时需要的某些资源可能被占用)并且决不能按照程序的顺序完成。当然,如果指令一设置了一个寄存器并且指令二使用了该寄存器,务必确保指令二在寄存器保存了正确的值之后才读出数据。虽然把这个弄对了需要做许多记录,但是同时执行多条执行确实增加了处理器的性能潜力。

指令应该很容易解码

在指令流输出时有一个极其重要的限制,就是各自解码来获取它们需要的资源。可以优化这个过程的任何措施都有价值。包括指令的规则化,固定其长度,使用少量的字段。指令之间的格式差异越小越好。

只有读取和存储涉及到内存

拆分指令最简单的办法就是规定:大多数指令的操作数来自并返回给CPU寄存器。在分解指令时会用到把操作数从内存移动到寄存器的操作。由于连接内存会花费大量时间,产生的延迟也难以预料,如果某些指令除了在内存和寄存器之间移动操作数之外什么也不做,最好把它们和其他指令合并(?)。上述观察意味着只有LOAD和STORE指令可以引用内存。其他所有指令最好只操作寄存器。

提供大量寄存器

因为连接内存的操作相对耗时,最好提供多一点的寄存器(最少32个),所以一旦取到一个字,在它被遗弃之前都可以放在寄存器里。如若寄存器耗尽,则不得不把它们保存的数据写回到内存里,迟些再重新读取,应当尽可能避免这种惹人厌烦的情况发生。最好的办法就是提供足够多的寄存器。

原文地址:https://www.cnblogs.com/xihui/p/11622077.html

时间: 2024-10-10 03:42:21

2.1.4 现代计算机的设计原则(译)的相关文章

Java程序员应该了解的10个面向对象设计原则

面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程. 众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Ap

Hbase中rowkey设计原则

Hbase中rowkey设计原则 1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度是64KB. 4.核心原则 设计必须按照业务需求进行设计 5.长度原则 经验:10~100字节可以 官方:16字节,因为操作系统时8字节进行存储 6.散列原则 划分region是按照rowkey的头部进行划分. 有几种方式: )组合字段 id+timestamp )

设计原则之接口隔离原则

segregate   v.隔离 se 蛇  gre green格林  gate门 蛇被格林用门隔离了. 设计原则之接口隔离原则 动机:         客户不应该被强制实现他们不用的方法.应该用多个小的接口代替庞大功能全的接口. 结论:        该原则在代码设计的时候就要考虑.可以使用适配器模式将胖接口隔离. Bad Example:    缺点:         1.如果新增一个robot机器人工人,那么eat方法就是多余的了. // interface segregation pri

设计原则之单一职能原则

设计原则之单一职能原则 动机:         一个职能被考虑成为只有唯一理由去改变,如果我们有两个理由去改变一个类,我们要把这两个功能分成两个类.每个类只控制一个职能,如果在未来有一天我们做某个改变,去改变对应的类就行了. 目标:        一个类应该只有一个被改的理由. Bad Example:缺点:     1.新增一个新的协议将会带来一个新需求,要为每种域序列化内容.     2.内容不一定是string,也会有html等其他形式. // single responsibility 

设计原则之里氏代换原则

设计原则之里氏代换原则 substitute  = replace 替换 sub 下 st石头 i我  tu土 te特别 我用石头替换下土,造了特比坚固的房子 hierarchy  ['harɑk] = level 等级 hi海豹  er儿子  ar are是  ch成龙 海豹儿子的雷霆战机等级是比成龙高 derive [di'raiv]  起源,派生 de德国  rive river河 德国的莱茵河起源于阿尔卑斯山 动机:         当我们创建类的层级(继承),我们继承一些类,创建一些派

设计模式2 面向对象设计原则

面向对象设计原则  原则的目的 面向对象设计原创表  单一职责原则案例 开闭原则 案例 依赖倒转原则 案例 面向对象设计原则  对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一.在面向对象设计中,可维护性的复用是以设计原则为基础的.每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平.  面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含

设计模式——设计模式与设计原则

设计模式--设计模式与设计原则 一.设计模式  1.设计模式简介 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石. 模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再

面向对象设计原则

七大原则:开闭原则.里氏代换原则.依赖倒转原则.合成/聚合复用原则.迪米特法则.接口隔离原则,单一职责原则. 开闭原则是面向对象的可复用的基石.其他六种原则是手段和工具. 各规则详细(本部分为转载) http://kb.cnblogs.com/page/214010/ 正如牛顿三大定律在经典力学中的位置一样,“开-闭”原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的基石.其他设计原则(里氏代换原则.依赖倒转原则.合

软件设计原则和方法通俗理解

网上有很多关于软件设计原则的说法,很精确,很官方,但是对于有些初学者来说可能是不知所云,到最后把自己给郁闷到了,学习软件应该是一件愉快的事情. 那么软件设计原则有哪些呢? (1)可靠性 做出一个可靠的软件,跟女人找一个可靠的男人一样,女人找男人,需要男人品质好,人品好,靠谱,可信赖,可依靠,身材高大,等等.软件设计也是一样,在软件的设计阶段就要非常注意软件的可靠性,不要等到最后用的时候发现软件这里不行那里不行,或者说在使用软件过程中一旦发现问题还是可以恢复使用,不能直接崩溃. (2)健壮性 这个