1计算机系统概述_1.2计算机系统层次结构

news2024/12/29 8:11:40

1.2 计算机系统层次结构

计算机系统(CO 自命名)

1、CO的组成

硬件系统软件系统共同构成了一个完整的计算机系统
——硬件:有形的物理设备,是CO中实际物理装置的总称
——软件:在硬件上运行的程序和相关的数据及文档

2、计算机硬件

冯·诺依曼机基本思想

存储程序 的基本思想是:将事先编制好的程序原始数据送入主存后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。

冯·诺依曼在研究EDVAC机时提出了存储程序的概念,

  • 存储程序 的思想 奠定了现代计算机的基本结构
  • 以此概念为基础的各类计算机通称为冯·诺依曼机

其特点如下:

  • 采用“存储程序”的工作方式。
  • 计算机硬件系统由5大部件组成: 运算器、存储器、控制器、输入设备和输出设备
  • 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们。
  • 指令和数据均用二进制代码表示。
    ——指令由操作码和地址码组成,
           操作码指出操作的类型
           地址码指出操作数的地址

计算机的功能部件

1 输入设备 输出设备

——输入/输出设备I/O设备)是计算机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。

2 存储器

存储器分为主存储器内存储器)和辅助存储器外存储器
——主存储器
        CPU能够直接访问的存储器是主存储器
        主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式
——辅助存储器
        辅助存储器用于帮助主存储器记忆更多的信息,
        辅助存储器中的信息必须调入主存后,才能为 CPU所访问。

主存储器的最基本组成如图所示。
在这里插入图片描述

  • 存储体存放二进制信息
  • 地址寄存器(MAR) 存放访存地址,经过地址译码后找到所选的存储单元。
  • 数据寄存器(MDR) 用于暂存要从存储器中读或写的信息,
  • 时序控制逻辑用于产生存储器操作所需的各种时序信号。

存储体由许多存储单元组成,
              每个存储单元包含若干存储元件
                                          每个存储元件存储一位二进制代码“0”或“1”。

因此存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是1B(8bit)或是字节的偶数倍。

MAR用于寻址,其位数对应着存储单元的个数,如MAR为10位,则有2^10=1024个存储单元,记为1K。MAR的长度与PC的长度相等

MDR的位数存储字长相等,一般为字节的2次幂的整数倍。

注意:MAR与MDR虽然是存储器的一部分,但在现代计算机中却是存在于CPU中的

3 运算器

——是计算机的执行部件,用于进行算术运算逻辑运算
——运算器的核心是算术逻辑单元(ALU)
——运算器包含若干通用寄存器,用于暂存操作数中间结果
累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、 变址寄存器(IX)、基址寄存器(BR)等,其中前3个寄存器是必须具备的。
——运算器内还有程序状态寄存器(PSW),也称标志寄存器,用于存放ALU运算得到的一些标志信息处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。

4 控制器

——控制器是计算机的指挥中心,由其“指挥”各部件自动协调地进行工作。
——控制器由程序计数器(PC)指令寄存器(IR)控制单元(CU)组成。
——PC用来存放当前
欲执行
指令的地址,具体自动+1的功能(这里的“1”指一条指令的长度), 即可自动形成下一条指令的地址,它与主存的MAR之间有一条直接通路。
——IR用来存放当前的指令,其内容来自主存的MDR指令中的操作码OP(IR)送至CU, 用以分析指令并发出各种微操作命令序列
——而 地址码Ad(IR) 送往 MAR,用以取操作数。

一般将运算器控制器集成到同一个芯片上,称为中央处理器(CPU)

CPU主存储器共同构成主机,而除主机外的其他硬件装置(外存、IO设备等)统称为外部设备,简称外设
在这里插入图片描述
CPU包含ALU、通用寄存器组GPRs、标志寄存器、 控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR\存储器数据寄存器MDR。

图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)

3、计算机软件

按其功能分类,可分为系统软件应用软件

系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。

系统软件主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等。

应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。

三个级别的语言

  • 机器语言(二进制代码语言):
    ——需要编程人员记忆每条指令的二进制编码
    ——机器语言是计算机唯一可以直接识别和执行的语言
  • 汇编语言
    ——汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。
    ——使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行。
  • 高级语言
    ——高级语言(如C、C++、java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。
    ——通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
    由于计算机无法直接理解和执行高级语言程序,翻译程序有以下三类:
    ——汇编程序(汇编器)
    将汇编语言程序翻译成机器语言程序。
    ——解释程序(解释器)
    将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
    ——编译程序(编译器)
    将高级语言程序翻译成汇编语言或机器语言程序。

软件和硬件的逻辑功能等价性

  • 硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现。

  • 对某一功能来说,既可以由硬件实现,又可以由软件实现,从用户的角度来看,它们在功能上是等价的。

  • 例如,浮点数运算既可以用专门的浮点运算器硬件实现,又可以通过一段子程序实现,这两种方法在功能上完全等效,不同的只是执行时间的长短而已,显然硬件实现的性能要优于软件实现的性能。

  • 软件和硬件逻辑功能的等价性是计算机系统设计的重要依据

  • 软、硬件的功能分配其界面的确定 是计算机系统结构研究的重要内容。

  • 当研制一台计算机时,设计者必须明确分配每一级的任务,确定哪些功能使用硬件实现,哪些功能使用软件实现。

  • 软件、硬件功能界面的划分是由设计目标、性能价格比、技术水平等综合因素决定的

  • 一个功能若其自身使用频繁 且 用硬件实现的成本较为理想,使用硬件解决可以提高效率。


4、计算机系统的层次结构

计算机是一个硬软件组成的综合体。

由于软/硬件的设计者和使用者从不同的角度、用不同的语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。

计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。

关于计算机系统层次结构的分层方式,目前尚无统一的标准:

第1级是微程序机器层,这是一个实在的硬件层, 它由机器硬件直接执行微指令。

第2级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。

第3级是操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。

第4级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。

第5级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。在高级语言层之上,还可以有应用程序层。

  • 没有配备软件的纯硬件系统称为裸机
  • 第3层~第5层称为虚拟机,简单来说就是软件实现的机器。
    虚拟机器只对该层的观察者存在,这里的分层和计算机网络的分层类似,对于某层的观察者来说,只能通过该层的语言来了解和使用计算机,而不必关心下层是如何工作的。
  • 层次之间的关系紧密,下层是上层的基础,上层是下层的扩展
  • 软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。
  • 可以看出,ISA是指软件能感知到的部分,也称软件可见部分。

5、计算机系统工作原理

5.1“存储程序”工作方式

  • “存储程序”工作方式规定,程序执行前,需要将程序所含的指令和数据送入主存,一旦程序被启动执行,就无须操作人员的干预, 自动逐条完成指令的取出和执行任务。

  • 一个程序的执行就是周而复始地执行一条一条指令的过程。

  • 每条指令的执行过程包括:
    从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。

  • 程序执行前,先将程序第一条指令的地址存放到PC中,取指令时,将PC的内容作为地址访问主存。

  • 在每条指令执行过程中, 都需要计算下条将执行指令的地址,并送至PC。
    若当前指令为顺序型指令,则下条指令地址为PC的内容加上当前指令的长度;若当前指令为转跳型指令,则下条指令地址为指令中指定的目标地址。

  • 当前指令执行完后,根据PC的值到主存中取出的是下条将要执行的指令,因而计算机能周而复始地自动取出并执行一条一条的指令。

5.2 从源程序到可执行文件

  • 预处理阶段——编译阶段——汇编阶段——链接阶段

5.3 程序执行过程的描述

  • 程序的执行过程就是数据在CPU、主存储器和IO设备之间流动的过程,

  • 所有数据的流动都是通过总线、IO接口等进行的。

  • 在程序的执行过程中,必须依靠操作系统的支持。用户程序不能直接访问某些底层硬件(键盘、磁盘等),需要依靠操作系统内核来完成。(eg:用户程序需要调用内核的read系统调用来读取磁盘上的文件。)

5.4 指令执行过程的描述

  • 可执行文件代码段是由一条一条机器指令构成的,
  • 指令是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。

例如,取数指令从存储单元中取出一个数据送到CPU的寄存器中,存数指令将CPU寄存器的内容写入一个存储单元,ALU指令将两个寄存器的内容进行某种算术或逻辑运算后送到一个CPU寄存器中,等等。

下面以取数指令(送至运算器的ACC中)为例来说明,其信息流程如下:

Ⅰ取指令:PC(程序计数器)→MAR(地址寄存器)→M(主存)→MDR(数据寄存器)→IR(指令寄存器)

  • 根据PC取指令到IR,将PC的内容送MAR,
  • MAR中的内容直接送地址线,同时控制器将 读信号送 读/写信号线
  • 主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,
  • MDR从数据线接收指令信息,并传送到IR中。

Ⅱ分析指令:OP(IR)→CU(控制单元)

  • 指令译码并送出控制信号。
  • 控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。
  • 在本例中,IR中是取数指令,因此读控制信号被送到总线的控制线上。

Ⅲ执行指令:Ad(IR)→ MAR →M→ MDR →ACC(累加器)

  • 取数操作。
  • IR中指令的地址码送MAR,MAR中的内容送地址线
  • 同时控制器将读信号读/写信号线,从主存中读出操作数,
  • 并通过数据线送至MDR,再传送到ACC中。
  • 每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1→PC

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud:分布式缓存之Redis哨兵

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。 1.哨兵原理 1.1.集群结构和作用 哨兵的结构如图: 哨兵的作用如下: 监控:Sentinel会不断检查您的master和slave是否按预期工作自动故障恢复&#xff…

人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及…

labelimg闪退解决方法(之前使用过labelimg,但新一次使用,打开文件夹无反应,再次打开闪退的问题)及标注经验

问题描述: 之前使用过labelimg进行好多次的标注,但新一次运行使用,发现打开目录无反应,再次打开闪退的问题,重启电脑并且从新运行labelimg仍然无效。 解决方法: 关闭labelimg,然后删除文件C…

一文纵览Umi‘s Friends生态,GameFi浪潮的变革者

以“P2E”为特性的 GameFi,代表着游戏时代的新盈利模式,它将 NFT 或其他形式的代币化资产作为游戏内容,游戏内资产的寿命会,则随着这些资产继续存在于玩家的钱包中而延长(即便游戏关闭),资产的互…

class文件中,常量池、方法表、属性表,异常表等等相关数据解析!小白就跟我一起对照学【class字节码文件分析】

前言:前段时间读《深入java虚拟机》介绍到class文件的时候,由于理论知识较多,人总感觉疲惫不堪,就泛泛阅读了一下。在工作中使用起来知识点知道,但是总是需要查阅各种资料。今天有时间,继续整理常量池后面的…

session与cookie

session是一种会话机制。当客户端发送登录请求时,服务端会生成一个sessionId存储在cookie中返回给客户端,客户端通过响应数据中的set-cookie字段来获取cookie并保存。如果客户端再向同一网站发送请求时,会自动携带cookie,相当于一…

离散数学_十章-图 ( 5 ):连通性 - 下

📷10.5 图的连通性 4. 有向图的连通性4.1 强连通4.2 弱连通4.3 (有向图的)强连通分支 5. 通路与同构6. 顶点间通路个数的计算 4. 有向图的连通性 根据是否考虑边的方向,在有向图中有两种连通性概念: 4.1 强连通 强连…

C/C++线程绑核详解

在一些大型的工程或者特殊场景中,我们会听到绑核,绑核分为进程绑核和线程绑核。绑核的最终目的都是为了提高程序和性能或者可靠性。 一:为什么需要绑核 操作系统发展至今,已经能很好的平衡运行在操作系统上层的应用,兼…

16.3:岛屿数量问题2

岛屿数量问题2 https://leetcode.cn/problems/number-of-islands-ii/ 给你一个大小为 m x n 的二进制网格 grid 。网格表示一个地图,其中,0 表示水,1 表示陆地。最初,grid 中的所有单元格都是水单元格(即&#xff0c…

Dubbo源码解析一网络通信原理

Dubbo 网络通信原理 1. Dubbo高可用集群1.1 服务集群的概述1.1.1 服务集群的概述1.1.2 调用过程1.1.3 组件介绍 1.2 集群容错机制1.2.1 内置集群容错策略1.2.1.1 Failover(失败自动切换)1.2.1.2 Failsafe(失败安全)1.2.1.3 Failfast(快速失败)1.2.1.4 Failback(失败自动恢复)1.…

卡尔曼滤波 | Matlab实现利用卡尔曼滤波器估计电池充电状态(Kalman Filtering)

文章目录 效果一览文章概述研究内容程序设计参考资料效果一览 文章概述 卡尔曼滤波 | Matlab实现利用卡尔曼滤波器估计电池充电状态(Kalman Filtering) 研究内容

gyp verb `which` failed Error: not found: python2

安装node-sass居然需要python2,7环境,不能python3 我只能重新降版本: python2.7:https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi npm ERR! code 1 npm ERR! path F:\idea2021work\music01 初始化\music-client\node_modules\node-sass np…

自然语言处理从入门到应用——自然语言处理的基础任务:词性标注(POS Tagging)和句法分析(Syntactic Parsing)

分类目录:《自然语言处理从入门到应用》总目录 词性标注 词性是词语在句子中扮演的语法角色,也被称为词类(Part-Of-Speech,POS)。例如,表示抽象或具体事物名字(如“计算机”)的词被…

【遗传算法简介】

遗传算法:原理与实战 简介 遗传算法是一种模拟达尔文生物进化论的自然选择以及遗传学机制的搜索算法,由 John Holland 在20世纪70年代提出。它们在各种搜索、优化和机器学习任务中已被广泛应用。 遗传算法原理 1. 编码 遗传算法的第一步是将问题的可…

Andriod开发 Room 数据库处理框架

1.Room框架 Room是Android Jetpack组件库中的一部分,它是一个SQLite数据库的抽象层,提供了更简单的API和更好的性能,适合于中大型应用程序。 2.Room的使用 使用Room和之前使用SQLite搭建数据库的过程类似,但是更加简单了。 1&…

JAVA网络编程(一)

一、什么是网络编程 定义:在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 应用场景:即时通信,网游,邮件等 不管什么场景,都是计算机与计算机之间通过网络在进行数据传输 java提供一…

软件测试必会:cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大🤣 01、为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意…

穿针引线之 AsyncLocalStorage

在 Node.js 中,如何更优雅地获取请求上下文一直是一个问题,看一下下面的例子。 背景 const http require(http); function handler1(req, res) {console.log(req.url); }function handler2(req, res) {console.log(req.url); }http.createServer((req…

【react全家桶】react-Hook (下)

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录 15【react-Hook &#xff08;下&#x…

进程控制(Linux)

进程控制 fork 在Linux中&#xff0c;fork函数是非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 返回值&#xff1a; 在子进程中返回0&#xff0c;父进程中返回子进程的PID&#xff0c;子进程创建失败返回-1。 …