计算机系统结构——01结论

1.1 计算机系统的层次结构

从使用语言的角度,一台由软、硬件组成的通用计算机系统可以被看成是按功能划分的多层机器级组成的层次结构。具体的计算机系统,其层次数的多少可以有所不同。

说明:

  1. M0用硬件实现,M1用微程序(固件)实现,M2到M5大多是用软件实现。所谓固件是一种具有软件功能的硬件。
  2. 操作系统程序虽然已经发展到用高级语言(如C语言)编写,但最终还是要用机器语言程序或微指令程序来解释。它提供了传统机器语言机器级M1所没有,但为汇编与高级语言使用和实现所用的基本操作, 命令及数据结构。
  3. dsfsdfsfs

翻译技术:先用转换程序将高一级机器级上的程序整个地变成低一级机器级上等效的程序,然后在低一级机器级上实现的技术。 解释技术:在低级机器级上用它的一串语句或指令来仿真高级机器级上的一条语句和指令的功能,是通过对高级机器级语言程序中的每条语句或指令逐条解释来实现的技术。

1.2 计算机系统结构、计算机组成和计算机实现

1.2.1 计算机系统结构的定义和内涵

透明(Transparent):如果客观存在的事物或属性从某个角度看不到,则称对她是透明的。 计算机系统结构研究的是软、硬件之间的功能分配以及对传统机器级界面的确定。为机器语言、汇编语言程序设计者或编译程序生成系统设计或生成的程序能在机器上正确运行提供应看到和遵循的计算机属性。 就目前的通用机来说,计算机系统结构的属性包括:  1. 硬件能直接识别和处理的数据类型及格式等的数据表示。  2. 最小可寻址单位、寻址种类、地址计算等的寻址方式。  3. 通用/专用寄存器的设置、数量、字长、使用约定等的寄存器组织。  4. 二进制或汇编指令的操作类型、格式、排序方式、控制机构等的指令系统。  5. 主存的最小编址单位、编码方式、容量、最大可编址空间等的存储系统组织。  6. 中断的分类与分级、中断处理程序功能及入口地址等的中断机构。  7. 系统机器级的管态与用户态的定义与切换。  8. 输入/输出设备的连接、使用方式、数量、操作结束、出错指示等的机器级I/O结构。  9. 系统各部分的信息保护方式和保护机构等属性。

1.2.2 计算机组成与计算机实现的内涵

计算机组成 计算机组成指计算机系统结构的逻辑实现,包括机器级内部的数据流和控制流的组成以及逻辑设计等。

计算机组成着眼于机器级内部各时间的排列方式和控制机构、各部件的功能及各部件之间的联系。它要解决的问题是希望达到的性能和价格的情况下,如何更好、更合理地把各种设备和部件组织成计算机,实现所确定的系统结构。

计算机组成设计要确定的方面一般包括:

  1. 数据通路宽度(数据总线一次并行传送的信息位数)。
  2. 专用部件的设置
  3. 各种操作对部件的共享程度
  4. 功能部件的并行度
  5. 控制机构的组成方式
  6. 缓冲和排队技术
  7. 预估、预判技术
  8. 可靠性技术

计算机实现 计算机实现指的是计算机组成的物理实现。包括处理机、主存等部件的物理结构,器件的集成度与速度,器件、模块、插件、底板的划分与连接,专用器件的设计,微组装技术、信号传输,电源、冷却及整机装配技术等。 计算机实现的设计着眼于器件技术微组装技术

机器/汇编指令系统、数据表示、是否采用通道方式输入/输出的确定数据计算机系统结构;指令采用顺序、重叠、流水还是其他方式解释,数据通路宽度的确定,通道采用结合性还是独立型,则属于计算机实现

1.2.3 计算机系统结构、组成和实现的相互关系和影响

  1. 计算机系统结构、组成、实现三者互不相同,但又相互影响。
  2. 相同结构的计算机可以采用不同的组成,一种组成也可有多种不同的实现。
  3. 组成也会影响结构,组成设计向上结构,向下受限于实现技术。
  4. 计算机组成和计算机实现关系密切,可以合称为计算机实现,即计算机系统的逻辑实现和物理实现。

1.3 计算机系统的软、硬件取舍及定量设计原理

1.3.1 软、硬件取舍的基本原则

原则1 应考虑在现有硬、器件(主要是逻辑器件和存储器件)条件下,系统要有高的性能价格比,主要从实现费用、速度和其他性能要求来总和考虑。 原则2 要考虑到准备采用和可能采用的组成技术,使之尽可能不要过多或不合理地限制各种组成、实现技术的采用。 原则3 不能仅从"硬"的角度考虑如何便于应用组成技术的成果和便于发挥器件技术的发展,还应从"软"的角度把如何为编译和操作系统的实现以及为高级语言程序设计提供更多、更好的硬件支持放在首位。 应当进一步缩短高级语言与机器语言、操作系统与计算机系统结构、程序设计环境等与计算机系统结构之间存在的语义差距。计算机系统结构、机器语言是用硬件和固件实现的,而这些语义差距是用软件来填补的。语义差距的大小实际上取决于软、硬件的功能分配,差距缩小了,系统结构对软件设计的支持就加强了。

1.3.2 计算机系统的定量设计原理

  1. 哈夫曼(Huffman)压缩原理 尽可能加速处理高概率的事件远比加速处理概率很低的事件对性能的提高要显著。
  2. Amdahl定律

1967年由IBM公司的Amdahl在设计IBM360系列机时首先提出。 该定律主要可用于确定对系统中性能瓶颈部件采取措施提高速度后系统性能改进的程度。即系统加速比Sp。系统加速比Sp定义为为系统改进后的性能与未改进时的性能的比值,或者定义为系统未改进时的程序执行时间Told与改进后的程序执行时间Tnew的比值。系统加速比Sp与两个因素有关,即性能可改进比fnew和部件加速比rnew,这样,系统的加速比为: 式中,分母的(1-fnew)为不能改进性能这部分的比例。 可见,当系统性能可改进fnew为0时,Sp=1;而当部件加速比rnew趋于无穷大时,分母中fnew/rnew将趋于0,这里有

  1. 程序访问的局部性定律

程序访问的局部性包括了时间上和空间上的两个局部性。时间上的局部性指的是现在正使用的信息可能不久前还要使用,这是因为程序存在着循环。空间上的局部性指的是最近的将来要用到的信息很可能与现在正在使用的信息在程序位置上是临近的。这是因为指令通常是顺序存放、顺序执行的,数据也通常是以向量、阵列、树、表等形式簇居地存放在一起的。

1.3.3 计算机系统设计的主要任务和方法

  1. 计算机系统设计的主要任务 计算机系统设计的主要任务包括系统结构、组成和实现的设计,首先要根据市场和应用情况,确定用户对计算机系统的功能、性能和价格的要求。
  • 确定应用领域是专用还是通用。
  • 确定软件兼容层次。
  • 确定对操作系统的要求。
  • 保证有高的标准化程度。
  1. 计算机系统的设计方法 从多级层次出发,计算机系统的设计按多级层次结构的由上、下、中开始设计由"又上往下"、"由下往上"、"由中间开始"3种不同的设计方法。
  • “由上往下”设计,也称“由顶向低”设计。根据满足应用要求,定好面向应用的那个虚拟机器级的特性和工作环境,再逐级向下设计。由上向下设计师一种串行设计方法,设计周期长,是一种对环境要求比较稳定的专用机设计方法。
  • “由下往上”设计,也称“由底向顶”设计,根据目前能用的器件,参照、吸收已有各种机器的特点,将微程序机器级和传统机器级研制出来。然后加配适用的操作系统和编译系统软件。该类设计一体式串行设计,同样会延长设计周期,现在已经很少使用。
  • “从中间开始”向两边设计,这是通用机一般采用的方法,它可以克服其他两种设计方法中,软硬件设计分离和脱节的致命缺点。该类设计是选择从层次结构的主要软硬件界面开始设计,即在传统机器语言级与操作系统机器级之间进行合理的软硬件分配。定义好界面后,向上向下同时展开设计。

1.4 软件、应用、器件的发展对系统结构的影响

1.4.1 软件发展对系统结构的影响

软件的可移植性指的是软件不修改或只经少量修改就可由一台机器移植到另一台机器上运行,统一软件可用于不同的环境。 实现软件移植的技术主要由如下几种:

  1. 统一高级语言 由于高级语言是面向题目和算法的,与机器的具体结构关系不大。但目前没有一种对各种应用真正通用的高级语言,有如下原因:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

腾讯、网易、新浪新闻网站爬虫编写记录及评论格式分析

作者:reetsee.com首席运营官 http://blog.csdn.net/qq_17754181/article/details/45179667 至...

56550
来自专栏Cloud Native - 产品级敏捷

敏捷开发真正的重点不是 User Story 的拆分, 而是开发人员的能力

谈到敏捷开发, 许多人纠结的第一个问题便是: User Story 如何的划分? 更有不少人, 一遇到在 User Story 上有延迟交付或交付的质量不佳时,...

30370
来自专栏领域驱动设计DDD实战进阶

DDD实战进阶第一波(十五):开发一般业务的大健康行业直销系统(总结篇)

22730
来自专栏顶级程序员

相较其他语言,Python到底好在哪儿?

就个人发展而言,选择学习的技术与要就读的大学可谓同等重要。如果决定做错了,那往往会收到一堆麻烦,而不是想要的高薪工作。我想,现在你点开这篇文章,就代表你已考虑选...

13530
来自专栏程序员互动联盟

为了学编程,我选择了中途退学

我是中途退学进入这个行业的,算是半路出家,入门还是得从我在学校的专业说起,我在学校的专业是自动化,需要学习一门编程语言,C语言,这是我接触的第一门语言,也是我最...

36350
来自专栏马洪彪

C#.Net与MATLAB集成

在数学分析工具方面,MATLAB无疑是佼佼者,除了作为软件工具外,MATLAB的自定义编程语言以及混合编程的支持,使其可以与Python、R之类数学分析语言媲美...

33170
来自专栏Java学习网

不要浪费时间写完美代码

 一个系统可以维持5年,10年,甚至20年以上,但是代码和设计模式的生命周期非常短,当对一个解决方案使用不同的方法进行迭代的时候,通常只能维持数月,数日,甚至几...

30350
来自专栏程序员互动联盟

【专业技术】 Linux下如何学习c语言?

引言   尽管 C 语言问世已近 30 年,但它的魅力仍未减退。C 语言继续吸引着众多的开发者,他们为了编写、移植或维护应用程序而必须学习新技能。   本文是为...

44960
来自专栏编程

浅谈CPU 并行编程和 GPU 并行编程的区别

CPU 的并行编程技术,也是高性能计算中的热点,那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为深入学习 CPU 并行编程技术打...

20580
来自专栏诸葛青云的专栏

C语言学到什么程度可以做项目?

都说编程学习是一个漫长的过程,会的东西越多,感觉懂的越少。要达到可以做项目的状态还是需要下些功夫的。但你非得说没有时间限制,懂一点点你就可以去做项目了。前提是你...

28400

扫码关注云+社区

领取腾讯云代金券