计算机系统的层次结构:
1、微程序设计级 ---- 第1级
该级的编程工具是微指令集,程序员用微指令编写的微程序,由硬件直接执行。(如图中最下一行右边的PCWrite =1表示对PC寄存器的写控制,详细内容在控制器部分将详细学习)
2、传统机器级 ---- 第2级
该级的编程工具是计算机的机器语言指令集,程序员用机器指令编写的程序由微程序进行解释执行
3、操作系统级 --- 第3级
从操作系统的基本功能来看,一方面它直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸
4、汇编语言级 --- 第4级
该级的编程工具是汇编语言指令集。与第二层所采用的机器语言编程工具相比,采用汇编语言编写程序便于理解与记忆
5、高级语言级 --- 第5级
该集的编程工具是各种高级语言如C语言等,高级语言源程序通常用编译程序来完成高级语言翻译后才能被底层的硬件执行
6、层次之间的关系
1)各层次之间的关系十分密切,高层是低层功能的扩展,低层是高层实现的基础。
2)站在不同的层次观察计算机系统,到关于计算机不同的概念。上图第二列分别对应地给出了从高级语言、汇编语言、机器语言和微程序设计级所看到的计算机的不同编程工具。
拓展:
计算机系统指用于数据库管理的计算机硬软件及网络系统。数据库系统需要大容量的主存以存放和运行操作系统、数据库管理系统程序、应用程序以及数据库、目录、系统缓冲区等,而辅存则需要大容量的直接存取设备。此外,系统应具有较强的网络功能。
计算机系统的特点是能进行精确、快速的计算和判断,而且通用性好,使用容易,还能联成网络。①计算:一切复杂的计算,几乎都可用计算机通过算术运算和逻辑运算来实现。②判断:计算机有判别不同情况、选择作不同处理的能力,故可用于管理、控制、对抗、决策、推理等领域。③存储:计算机能存储巨量信息。④精确:只要字长足够,计算精度理论上不受限制。
详细内容请在 百度百科 计算机系统 中了解
2023-10-07 广告
计算机系统层次结构的概念,目前比较一致的计算机系统的层次结构如下图1.4,其中左边是层次结构中各层次的名字,右边是对应于不同层的某种编程语言表现形式。
1)微程序设计级 ---- 第1级
该级的编程工具是微指令集,程序员用微指令编写的微程序,由硬件直接执行。(如图中最下一行右边的PCWrite =1表示对PC寄存器的写控制,详细内容在控制器部分将详细学习)。计算机组成原理在计算机系统层次结构中所处的层次就是微程序设计级。
2)传统机器级 ---- 第2级
该级的编程工具是计算机的机器语言指令集,程序员用机器指令编写的程序由微程序进行解释执行。
3)操作系统级 --- 第3级
从操作系统的基本功能来看,一方面它直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸。
4)汇编语言级 --- 第4级
该级的编程工具是汇编语言指令集。与第二层所采用的机器语言编程工具相比,采用汇编语言编写程序便于理解与记忆。
5)高级语言级 --- 第5级
该集的编程工具是各种高级语言如C语言等,高级语言源程序通常用编译程序来完成高级语言翻译后才能被底层的硬件执行。
2.层次之间的关系
1)各层次之间的关系十分密切,高层是低层功能的扩展,低层是高层实现的基础。
2)站在不同的层次观察计算机系统,到关于计算机不同的概念。上图第二列分别对应地给出了从高级语言、汇编语言、机器语言和微程序设计级所看到的计算机的不同编程工具。
3)层次划分不是绝对的。计算机系统的层次结构会随着软件硬化和硬件软化而动态变化。
计算机系统结构指的是什么? 是一台计算机的外表? 还是是指一台计算机内部的一块块板卡安放结构? 都不是,那么它是什么? 计算机系统结构就是计算机的的机器语言程序员或编译程序编写者所看到的外特性。所谓外特性,就是计算机的概念性结构和功能特性。用一个不恰当的比喻一,比如动物吧,它的"系统结构"是指什么呢? 它的概念性结构和功能特性,就相当于动物的器官组成及其功能特性,如鸡有胃,胃可以消化食物。至于鸡的胃是什么形状的、鸡的胃部由什么组成就不是"系统结构"研究的问题了。系统结构只管到这一层。关于计算机系统的多层次结构,用"人"这种动物的不恰当的例子列表对比如下:(这种联系很不科学,只是大家轻松一下)。
计算机系统
人
应用语言级
为人民服务级
高级语言级
读书、学习级
汇编语言级
语言、思维级
操作系统级
生理功能级
传统机器级
人体器官级
微程序机器级
细胞组织级
电子线路级
分子级
传统机器级以上的所有机器都称为虚拟机,它们是由软件实现的机器。软硬件的功能在逻辑上是等价的,即绝大多部分硬件的功能都可用软件来实现,反之亦然。
计算机系统结构的外特性,一般应包括以下几个方面(这也就是我们要分章学习的几个章节)把这几个方面弄清了,系统结构也就基本明确了:
(1)指令系统 (2)数据表示 (3)作数的寻址方式 (4)寄存器的构成定义 (5)中断机构和例外条件 (6)存储体系和管理 (7)I/O结构 (8)机器工作状态定义和切换 (9)信息保护。
所以在以后的学习中常回头想想这是系统结构的哪一方面,这对把握全局有好处。
这里提一下计算机系统结构的内部特性,计算机系统结构的内特性就是将那些外特性加以"逻辑实现"的基本属性。所谓"逻辑实现"就是在逻辑上如何实现这种功能,比如"上帝"给鸡设计了一个一定大小的胃,这个胃的功能是消化食物,这就是鸡系统的某一外特性,那怎么消化呢,就要通过鸡喙吃进食物和砂石,再通过胃的蠕动、依靠砂石的研磨来消化食物,这里的吃和蠕动等操作就是内特性。
还有一个就是计算机实现,也就是计算机组成的物理实现。它主要着眼于器件技术和微组装技术。拿上面的例子来说,这个胃由哪些组织组成几条肌肉和神经来促使它运动就是"鸡实现"。
据此我们可以分清计算机系统的外特性、内特性以及物理实现之间的关系。 在所有系统结构的特性中,指令系统的外特性是最关键的。因此,计算机系统结构有时就简称为指令集系统结构。我们这门课注重学习的是计算机的系统结构,传统的讲,就是处在硬件和软件之间介面的描述,也就是外特性。
这些不恰当的比喻只是帮助理解,不可强求对应,不然会有损科学的严密性。
计算机系统结构的分类
按"流"分类的方法,这是Flynn教授提出的按指令流和数据流的多倍性概念进行分类的方法。共有四大类,即:(S-single 单一的 I-instruction 指令 M-multiple 多倍的 D-data 数据)
SISD 单指令流单数据流,传统的单处理机属于SISD计算机。
SIMD 单指令流多数据流,并行处理机是SIMD计算机的典型代表。我国的YH-I型是此类计算机型。
MISD 多指令流单数据流,实际上不存在,但也有学者认为存在。
MIMD 多指令流多数据流,包括了大多数多处理机及多计算机系统。我国的YH-II型计算机是这种类型的计算机。
一般将标量流水机视为SISD类型,把向量流水机视为SIMD类型。
按"并行级"和"流水线"分类:这是在计算机系统中的三个子系统级别上按并行程度及流水线处理程度进行分类的方法。
--------------------------------------------------------------------------------
二、计算机系统的设计准则
1.只加速使用频率高的部件
这是最重要也是最广泛采用的计算机设计准则。因为加快处理频繁出现事件对系统的影响远比加速处理很少出现事件的影响要大。
2.阿姆达尔(Amdahl)定律
这个定律就是一个公式:即
应会运用此公式做一些计算或分析,所以要记住并理解其意义。
3.程序访问的局部性规律
程序访问的局部性主要反映在时间和空间局部性两个方面,时间局部性是指程序中近期被访问的信息项可能马上将被再次访问,空间局部性指那些在访问地址上相邻近的信息项很可能被一起访问。
三、计算机系统结构的发展
冯·诺依曼计算机的主要特点是:存储程序方式;指令串行执行,并由控制器加以集中控制;单元定长的一维线性空间的存储器;使用低级机器语言,数据以二进制表示;单处理机结构,以运算器为中心。
改进后的冯·诺依曼计算机使其从原来的以运算器为中心演变为以存储器为中心。 从系统结构上讲,主要是通过各种并行处理手段高提高计算机系统性能。
软件、应用和器件对系统结构发展的影响
软件应具有可兼容性,即可移植性。为了实现软件的可移植性,可用以下方法:
模拟:用软件方法在一台现有的计算机上实现另一台计算机的指令系统,这种用实际存在的机器语言解释实现软件移植的方法就是模拟。
仿真:用A机(宿主机)中的一段微程序来解释实现B机(目标机)指令系统中每一条指令而实现B机指令系统的方法称仿真,它是有部份硬件参与解释过程的。
一般将两种方法混合作用,对于使用频率高的指令用仿真方法,而对于频率低而且难于仿真实现的指令使用模拟的方法加以实现。
采用系列机的方法,可以这么说,系列机的系统结构都是一致的,如我们使用的INTEL 的80X86微机系列及其兼容机,系统结构都是一致的,当然在发展过程中它的系统结构可以得到了新的扩充,比如原来的586机器不支持MMX多媒体扩展指令集,但是后来的芯片中扩充了这些指令,使指令系统集扩大,但它们仍是同一系列的机器。这种系列机的方法主要是为了软件兼容。如上面的扩展指令,将使得以后针对这些指令优化的软件不能在以前的机子上运行(或不能发挥相应功能)导致向前兼容性不佳。但重要的是保证做到向后兼容,也就是在按某个时期推到市场上的该档机上编制的软件能不加修改地在它之后投入市场的机器上运行。
在系列机上,软件的可称植性是通过各档机器使用相同的高级语言、汇编语言和机器语言,但使用不同的微程序来实现的。
统一标准的高级语言
采用与机器型号无关的高级程序设计语言标准如FORTRAN、COBOL等,这种方法提供了在不同硬件平台、不同操作系统之间的可移植性。
开放系统:是指一种独立于厂商,且遵循有关国际标准而建立的,具有系统可移植性、交互操作性,从而能允许用户自主选择具体实现技术和多厂商产品渠道的系统集成技术的系统。
应用需求对系统结构发展的影响
计算机应用对系统结构不断提出的基本要求是高的运算速度、大的存储容量和大的I/O吞吐率。(我们要更快的主板CPU和内存、我们要更大的硬盘我们要更大的显示器更多的色彩更高的刷新频率...这就是需求)
计算机应用从最初的科学计算向更高级的更复杂的应用发展,经历了从数据处理、信息处理、知识处理以及智能处理这四级逐步上升的阶段。
器件对系统结构发展的影响
由于技术的进步,器件的性能价格比迅速提高,芯片的功能越来越强,从而使系统结构的性能从较高的大型机向小型机乃至微机下移。
综上所述:
软件是促使计算机系统结构发展的最重要的因素(没有软件,机器就不能运行,所以为了能方便地使用现有软件,就必须考虑系统结构的设计。软件最重要)
应用需求是促使计算机系统结构发展的最根本的动力(机器是给人用的,我们追求更快更好,机器就要做得更快更好。所以需求最根本)
器件是促使计算机系统结构发展最活跃的因素(没有器件就产不出电脑,器件的每一次升级就带来计算机系统结构的改进。没看见上半年刚买的机子,下半年就想把它扔进历史的垃圾堆么^_^,所以器件最活跃) 。
2013-08-11
需要达到 <领会> 层次的内容有算法、算法的时间复杂度和空间复杂度、最坏的和平均时间复杂度等概念,算法描述和算法分析的方法、对一般的算法要能分析出时间复杂度。
对于基本概念,仔细看书就能够理解,这里简单提一下:
数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
数据结构的定义虽然没有标准,但是它包括以下三方面内容: 逻辑结构、存储结构、和对数据的操作 。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。
比如一个 表 ( 数据库 ),我们就称它为一个数据结构,它由很多 记录 ( 数据元素 )组成,每个元素又包括很多 字段 ( 数据项 )组成。那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从 结点 (其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个 直接前趋 ,只有一个 直接后继 (前趋后继就是前相邻后相邻的意思),整个表只有一个 开始结点 和一个 终端结点 ,那我们知道了这些关系就能明白这个表的逻辑结构了。
而 存储结构 则是指用 计算机语言 如何表示结点之间的这种关系。如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。( 注意,在本课程里,我们只在高级语言的层次上讨论存储结构。 )
第三个概念就是对 数据的运算 ,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题。
弄清了以上三个问题,就可以弄清数据结构这个概念。
通常我们就将数据的 逻辑结构 简称为 数据结构 ,数据的逻辑结构分两大类: 线性结构 和 非线性结构 (这两个很容易理解)
数据的存储方法有四种: 顺序存储方法 、 链接存储方法 、 索引存储方法和散列存储方法 。
下一个是 难点 问题,就是算法的描述和分析,主要是 算法复杂度 的分析方法及其运用。
首先了解一下几个概念。一个是 时间复杂度 ,一个是 渐近时间复杂度 。前者是某个算法的时间耗费,它是该算法所求解问题 规模 n的函数,而后者是指当问题规模趋向无穷大时,该算法 时间复杂度的数量级。
当我们评价一个算法的时间性能时,主要标准就是 算法的渐近时间复杂度 ,因此, 在算法分析时,往往对两者不予区分,经常是将渐近时间复杂度T(n)=O(f(n)简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度 。
此外,算法中语句的频度 不仅与问题规模有关,还与输入实例中各元素的取值相关 。但是我们总是考虑在最坏的情况下的时间复杂度。以保证算法的运行时间不会比它更长。
常见的时间复杂度,按数量级递增排列依次为: 常数阶O(1) 、 对数阶O(log2n) 、 线性阶O(n) 、 线性对数阶O(nlog2n) 、 平方阶O(n^2)、立方阶O(n^3) 、 k次方阶O(n^k) 、 指数阶O(2^n) 。
时间复杂度的分析计算请看书本上的例子,然后我们通过做练习加以领会和巩固。
数 据 结 构 习 题 一
1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
◆ 数据 :指能够被计算机识别、存储和加工处理的信息载体。
◆ 数据元素 :就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。数据元素有时可以由若干 数据项 组成。
◆ 数据类型 :是一个值的集合以及在这些值上定义的一组操作的总称。
◆ 数据结构 :指的是数据之间的相互关系,即数据的组织形式。一般包括三个方面的内容:数据的 逻辑结构 、 存储结构 和 数据的运算 。
◆ 逻辑结构 :指各数据元素之间的逻辑关系。
◆ 存储结构 :就是数据的逻辑结构用计算机语言的实现。
◆ 线性结构 :数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个 开始结点 和一个 终端结点 ,并且所有结点都最多只有一个 直接前趋 和一个 直接后继 。线性表就是一个典型的线性结构。
◆ 非线性结构 :数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。
1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。
◆ 例如有一张学生成绩表,记录了一个班的学生各门课的成绩。按学生的姓名为一行记成的表。这个表就是一个数据结构。每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继 (它的前面和后面均有且只有一个记录)。这几个关系就确定了这个表的逻辑结构。
那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢? 是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。(所以各位赶快学C语言吧)。
最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。
1.3 常用的存储表示方法有哪几种?
常用的存储表示方法有四种:
◆ 顺序存储方法 :它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为 顺序存储结构 。
◆ 链接存储方法 :它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为 链式存储结构 。
◆ 索引存储方法 :除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
◆ 散列存储方法 :就是根据结点的关键字直接计算出该结点的存储地址。
1.4 设三个函数f,g,h分别为 f(n)=100n^3+n^2+1000 , g(n)=25n^3+5000n^2 , h(n)=n^1.5+5000nlgn 请判断下列关系是否成立:
(1) f(n)=O(g(n))
(2) g(n)=O(f(n))
(3) h(n)=O(n^1.5)
(4) h(n)=O(nlgn)
◆ (1)成立。
◇ 这里我们复习一下渐近时间复杂度的表示法 T(n)=O(f(n)) ,这里的"O"是数学符号,它的严格定义是" 若T(n)和f(n)是定义在正整数集合上的两个函数,则T(n)=O(f(n))表示存在正的常数C和 n 0 ,使得当n≥ n 0 时都满足0≤T(n)≤C·f(n)。 "用容易理解的话说就是 这两个函数当整型自变量n趋向于无穷大时,两者的比值是一个不等于0的常数 。这么一来,就好计算了吧。第(1)题中两个函数的最高次项都是n^3,因此当n→∞时,两个函数的比值是一个常数,所以这个关系式是成立的。
计算机系统由硬件和软件两大部分所构成,而如果按功能再细分,可分为7层(如图所示)。 第零级是硬联逻辑级,这是计算机的内核,由门,触发器等逻辑电路组成。 第一级是微程序级。这级的机器语言是微指令集,程序员用微指令编写的微程序,一般是直接由硬件直接执行的。 第二级是传统机器级,这级的机器语言是该机的指令集,程序员用机器指令编写的程序可以由微程序进行解释。 第三级是操作系统级,从操作系统的基本功能来看,一方面它要直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸。 第四级是汇编语言级,这级的机器语言是汇编语言,完成汇编语言翻译的程序叫做汇编程序。 第五级是高级语言级,这集的机器语言就是各种高级语言,通常用编译程序来完成高级语言翻译的工作。 第六级是应用语言级,这一级是为了使计算机满足某种用途而专门设计的,因此这一级语言就是各种面向问题的应用语言。 把计算机系统按功能分为多级层次结构,就是有利于正确理解计算机系统的工作过程,明确软件,硬件在计算机系统中的地位和作用。