1.计算机系统概述

目录

一. 计算机的发展

二. 计算机硬件的基本组成

三. 各个硬件的工作原理

(1)主存储器

(2)运算器

(3)控制器

(4)一个例子

四. 计算机系统的层次结构

五. 计算机的性能指标

(1)CPU

(2)系统整体性能指标


一. 计算机的发展

二. 计算机硬件的基本组成

冯诺伊曼机——“存储程序”的概念:是指将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

在计算机系统中,软件和硬件在逻辑上是等效的。例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算也可以用软件的方式,执行多次加法运算来实现。

冯·诺依曼计算机的特点:

  1. 计算机由五大部件组成
  2. 指令和数据以同等地位存于存储器,可按地址寻访
  3. 指令和数据用二进制表示
  4. 指令由操作码和地址码组成
  5. 存储程序
  6. 以运算器为中心

输入/输出设备与存储器之间的数据传送通过运算器完成。

现代计算机:以存储器为中心。CPU=运算器+控制器。

计算机的组成结构:

注意:主存(Main Memory)是计算机中用于存储数据和程序的部分。它是计算机的内部存储器,也被称为内存或随机存取存储器(RAM)。主存具有较快的读写速度,可以直接被中央处理器(CPU)访问。辅存(Secondary Storage)是计算机中用于长期存储数据和程序的部分。它通常是磁盘驱动器或固态硬盘(SSD),用于存储操作系统、应用程序、文件和其他数据。辅存的读写速度较慢,但它可以存储大量数据,并且可以长期保存数据,即使计算机关闭或断电。辅存也被称为外部存储器。

三. 各个硬件的工作原理

(1)主存储器

存储体:存放数据,由一系列存储元件构成,可存放二进制数据0和1。数据在存储体内按地址存储。

  • 存储单元:每个存储单元存放一串二进制代码
  • 存储字(word):存储单元中二进制代码的组合
  • 存储字长:存储单元中二进制代码的位数
  • 存储元:即存储二进制的电子元件(电容),每个存储元可存1bit。多个存储元加线路就组成存储单元。

Memory Address Register(MAR)存储地址寄存器:寄存器也用来存放数据。MAR的位数反映了存储单元的个数。例如:MAR=4位→总共有2^4=16个存储单元。

Memory Data Register(MDR)存储数据寄存器:MDR的位数=存储字长。例如:MDR=16位→每个存储单元可存放16bit,1个存储字(word)= 16bit。

现代计算机也通常把MAR和MDR集成在CPU里。

易混淆:1个字节(Byte) = 8bit,1B=1个字节,1b=1个bit

总容量=存储单元个数×存储字长bit=存储单元个数×存储字长/8 Byte。

Eg: MAR为32位,MDR为8位,总容量=2^{32}*8bit=4GB 

注意:K=2^{10},M=2^{20},G=2^{30},T=2^{40}
 

(2)运算器

运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)

  • ACC:累加(寄存)器,用于存放操作数,或运算结果。
  • MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
  • X:通用的操作数寄存器,用于存放操作数(可能有多个)。
  • ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算。
     

(3)控制器

  • CU:控制单元,分析指令,给出控制信号
  • IR:指令寄存器,存放当前执行的指令
  • PC:程序计数器,存放下一条指令地址,有自动加1功能

(有时也把前两个统称为取指)

(4)一个例子

下面举例来说明各硬件的工作过程。例如,在计算机中运行C程序:

计算机经过编译后把程序翻成二进制码,同时数据存入主存。代码和数据都存入存储体:

以第一条语句为例,读取a至累加器ACC:

  • 初:(PC)=0,指向第一条指令的存储地址
  • #1:(PC)→MAR,导致(MAR)=0
  • #3:M(MAR)→MDR(把存储体中MAR地址中的数据读到MDR),导致(MDR)=000001 0000000101
  • #4: (MDR)→IR,导致(IR)=000001 0000000101
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是一条取数指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=5
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000010=2
  • #9: (MDR)→ACC,导致(ACC)=0000000000000010=2

取指令(#1~#4),PC自动加1→分析指令(#5)→执行取数指令(#6~#9)。

CPU区分指令和数据的依据:指令周期的不同阶段。

上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2

  • #1:(PC)→MAR,导致(MAR)=1
  • #3:M(MAR)→MDR,导致(MDR)=000100 0000000110
  • #4:(MDR)→lR,导致(IR)= 000100 0000000110
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,000100是一条乘法指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=0000000110(2)=6
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000011=3
  • #9:(MDR)→MQ,导致(MQ)=0000000000000011=3
  • #10:(ACC)→x,导致(X)=2
  • #11:(MQ)*(X)→ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储

取指令(#1~#4),PC自动加1→分析指令(#5)→执行乘法指令(#6~#11)

上一条指令取指后(PC)=2,执行后,(ACC)=6

  • #1:(PC)→MAR,导致(MAR)=2
  • #3:M(MAR)→MDR,导致(MDR)= 000011 0000000111
  • #4:(MDR)→>IR,导致(IR)= 000011 0000000111
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,000011是一条加法指令
  • #6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=7
  • #8:M(MAR)→MDR,导致(MDR)=0000000000000001=1
  • #9:(MDR)→x,导致(X)=0000000000000001=1
  • #10:(ACC)+(X)→ACC,导致(ACC)=7,由ALU实现加法运算

取指令(#1~#4),PC自动加1→分析指令(#5)→执行加法指令(#6~#10)

上一条指令取指后(PC)=3,执行后,(ACC)=7

  • #1:(PC)→MAR,导致(MAR)=3
  • #3:M(MAR)→MDR,导致(MDR)=000010 0000001000
  • #4:(MDR)→IR,导致(IR)= 000010 0000001000
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是一条存数指令
  • #6: Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=8
  • #7:(ACC)→MDR,导致(MDR)=7
  • #9:(MDR)→地址为8的存储单元,导致y=7

上一条指令取指后(PC)=4:

  • #1:(PC)→MAR,导致(MAR)=4
  • #3:M(MAR)→MDR,导致(MDR)=000110 0000000000
  • #4:(MDR)→R,导致(IR)= 000110 0000000000
  • #5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知这是停机指令,利用系统中断机制停止该进程。

四. 计算机系统的层次结构

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

编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次)

解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)

编译、汇编、解释程序,可统称翻译程序。

五. 计算机的性能指标

(1)CPU

CPU主频:CPU内数字脉冲信号振荡的频率。CPU主频与时钟周期互成倒数关系:

CPI (Clock cycle Per Instruction):执行一条指令所需的时钟周期数。不同的指令,CPI不同。甚至相同的指令,CPl也可能有变化。

执行一条指令的耗时=CPI×CPU时钟周期,CPU执行时间(整个程序的耗时)=CPU时钟周期数/主频=(指令条数*CPI)/主频

Eg:某CPU主频为1000Hz,某程序包含100条指令,平均来看指令的CPI=3。该程序在该CPU上执行需要多久?

解:\frac{1}{1000}\times 100\times3=0.3s

IPS ( Instructions Per Second ):每秒执行多少条指令(KIPS,MIPS)

FLOPS ( Floating-point Operations Per Second):每秒执行多少次浮点运算(KFLOPS...)

注:此处K、M、G、T为数量单位:
K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9,T=Tera=万亿=10^12

(2)系统整体性能指标

数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)。

吞吐量:指系统在单位时间内处理请求的数量。

它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期。

响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。

基准程序(动态测试):是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较。(eg.跑分软件)

问1:主频高的CPU一定比主频低的CPU快吗?——不一定,如两个cPU,A的主频为2GHz,平均CPl=10;B的主频1GHz,平均CPl=1...
问2:若A、B两个CPU的平均CPI相同,那么A一定更快吗?——也不一定,还要看指令系统,如A不支持乘法指令,只能用多次加法实现乘法;而B支持乘法指令。
问3:基准程序执行得越快说明机器性能越好吗?——基准程序中的语句存在频度差异,运行结果也不能完全说明问题。

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

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

相关文章

【Mysql】Mysql中表连接的原理

连接简介 在实际工作中,我们需要查询的数据很可能不是放在一张表中,而是需要同时从多张表中获取。下面我们以简单的两张表为例来进行说明。 连接的本质 为方便测试说明,,先创建两个简单的表并给它们填充一点数据: …

SpringBoot项目从resources目录读取文件

SpringBoot 从 resources 读取文件 使用 Spring 给我们提供的工具类来进行读取 File file org.springframework.util.ResourceUtils.getFile("classpath:人物模板.docx");可能读取失败,出现如下错误: java.io.FileNotFoundException: clas…

C语言实现九九乘法表

学习C语言后&#xff0c;我们会发现打印九九乘法表是很简单的&#xff0c;话不多说&#xff0c;我们上代码&#xff01; 目录 1.函数代码 2.运行结果 1.函数代码 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int i 1;int j 1;int n 0;//行数in…

Instant-NGP论文笔记

文章目录 论文笔记 论文笔记 instant-ngp的nerf模型与vanilla nerf的模型架构相同。 instant-ngp的nerf模型包含两个MLP&#xff0c;第一个MLP就两个全连接&#xff0c;输入维度是32&#xff08;16层分辨率x2&#xff09;&#xff0c;输出是16&#xff08;用于预测密度&#x…

【LeetCode每日一题合集】2023.9.18-2023.9.24(⭐拓扑排序⭐设计数据结构:LRU缓存实现 LinkedHashMap⭐)

文章目录 337. 打家劫舍 III&#xff08;树形DP&#xff09;2560. 打家劫舍 IV&#xff08;二分查找动态规划&#xff09;LCP 06. 拿硬币&#xff08;简单贪心模拟&#xff09;2603. 收集树中金币⭐思路——拓扑排序删边 2591. 将钱分给最多的儿童&#xff08;分类讨论&#xf…

记一次pdjs时安装glob出现,npm ERR! code ETARGET和npm ERR! code ELIFECYCLE

如往常一样&#xff0c;我使用pdjs来编译proto文件&#xff0c;但出现了以下报错&#xff1a; 大致就是pdjs的util在尝试执行npm install glob^7.2.1 escodegen^1.13.0时出错了 尝试手动执行安装&#xff0c;escodegen被正确安装&#xff0c;但glob^7.2.1出错 npm ERR! code E…

Redis那些事儿(三)

文章目录 1. 前言2. 常用api介绍3. 需求假设&#xff08;获取离我最近的停车场&#xff09;4. 代码示例 1. 前言 接着上一篇Redis那些事儿&#xff08;二&#xff09; &#xff0c;这一篇主要介绍Redis基于Geo数据结构实现的地理服务&#xff0c;它提供了一种方便的方式来存储和…

库房管理软件采购申请流程代码实现解析

300rmb掏了个javavue2的小系统&#xff0c;学习代码&#xff0c;调整下申请流程。 原有的入库流程是&#xff0c;库管&#xff08;admin&#xff09;提出采购申请给采购员&#xff08;caigou&#xff09;&#xff0c;采购员采购入库时点击入库完成采购入库流程。 想弄清后端代…

非关系型数据库Redis的安装【Linux】及常用命令

前言 Redis&#xff08;Remote Dictionary Server&#xff09;是一种开源的内存数据库管理系统&#xff0c;它以键值存储方式来存储数据&#xff0c;并且支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。Redis最初由Salvatore Sanfilippo开发&#xff0c…

数据分析实战 | 关联规则分析——购物车分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据预处理 七、生成频繁项集 八、计算关联度 九、可视化 一、数据及分析对象 数据集链接&#xff1a;Online Retail.xlsx 该数据集记录了2010年12月01日至2011年12月09日…

性能优于BERT的FLAIR:一篇文章入门Flair模型

文章目录 What is FLAIR&#xff1f;FLAIR ModelContextual String Embedding for Sequence Labelingexample FLAIR Application AreaSentiment AnalysisNamed Entity RecognitionText Classification FLAIR一、什么是FLAIR&#xff1f;二、FLAIR Library的优势是什么&#xff…

突破性技术!开源多模态模型—MiniGPT-5

多模态生成一直是OpenAI、微软、百度等科技巨头的重要研究领域&#xff0c;但如何实现连贯的文本和相关图像是一个棘手的难题。 为了突破技术瓶颈&#xff0c;加州大学圣克鲁斯分校研发了MiniGPT-5模型&#xff0c;并提出了全新技术概念“Generative Vokens "&#xff0c…

❤️ React的安装和使用(实战篇)

React的安装和使用 一、React的安装和使用 reactJs警告提示&#xff1a; This version of tar is no longer supported, and will not receive security updates. Please upgrade asap 翻译&#xff1a;tar2.2.2&#xff1a;此版本的tar不再受支持&#xff0c;将不会收到安全…

golang实现极简todolist

ToDoList 最近跟着qimi老师做了一个ToDoList&#xff0c;我做的GitHub地址贴在这里&#xff0c;但由于前端出了点问题&#xff0c;所以都是用postman进行测试 原项目地址 部分功能展示 删除代办 查找代办 下面给出思路 思路 其实这是一个很简单的增删改查的实现&#xff…

linux下使用vscode对C++项目进行编译

项目的目录结构 头文件swap.h 在自定义的头文件中写函数的声明。 // 函数的声明 void swap(int a,int b);swap.cpp 导入函数的声明&#xff0c;写函数的定义 #include "swap.h" // 双引号表示自定义的头文件 #include <iostream> using namespace std;// 函…

LeetCode.6 N字形变换

一开始想的是真的创建一个数组 去按照题目所给的要求填入数据 最后输出不为空的数组项 但是不仅时间复杂度高 而且错误频繁出现 最终也没有提交成功 查阅题解后发现数组并不重要 假设我们忽略掉数组中的那些空白项 最终输出的结果就是numRows行的字符串的拼接 string conver…

apachesolr中简单使用

core使用 首先点击add core 可以看到报错solrconfig.xml不在new_core目录下&#xff0c;new_core是我们点击后自动创建的 那么我们将D:\solr2\solr-9.3.0\solr-9.3.0\server\solr\configsets下的任何一个目录下的conf拷贝到new_core过去 这里是使用_default下的conf目录拷贝…

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】

【PC电脑windows环境下-[jetson-orin-NX]Linux环境下-下载工具esptool工具使用-相关细节-简单样例-实际操作】 1、概述2、实验环境3、 物品说明4-2、自我总结5、本次实验说明1、准备样例2、设置芯片3、编译4、下载5、验证 &#xff08;1&#xff09;windows环境下进行烧写1、下…

RabbitMQ 消息应答与发布

目录 一、消息应答 1、自动应答&#xff08;默认&#xff09; 2、手动消息应答的方法 ​编辑 3、消息重新入队 4、手动应答案列与效果演示 二、RabbitMQ持久化 1、队列持久化 2、消息持久化 三、不公平分发&#xff08;能者多劳&#xff0c;弱者少劳&#xff09; 1、…

算法通过村第十八关-回溯|青铜笔记|什么叫回溯(中篇)

文章目录 前言回溯的核心问题撤销操作解释总结 前言 提示&#xff1a;阳光好的时候&#xff0c;会感觉还可以活很久&#xff0c;甚至可以活出喜悦。 --余秀华 回溯是非常重要的算法思想之一&#xff0c;主要解决一些暴力枚举也搞不定的问题&#xff08;这里埋个坑&#x1f4a3;…