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.rhkb.cn/news/181764.html

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

相关文章

从公共业务提取来看架构演进——功能设置篇

1.引言 上一篇文章我们以帐号权限的提取为例,介绍了当架构跟不上业务发展时及时调整架构的一种思路。这篇文章我们以功能设置为例,进一步讨论公共业务提取这个话题。 功能设置在本文中是指产品开放给企业和用户的一些功能设置项,以视频会议…

【Tricks】vscode winscp进行服务器容器连接(含修改初始密码)

1:获取docker的登陆信息 例如节点(host)、端口(port)、密码(passwd)等信息,这个自己找组内的前辈获取即可 2:配置config文件 找到vscode里面ssh处的config文件 人工找…

高效实用:批量重命名文件夹,提升工作效率

在日常生活和工作中,我们经常需要处理大量的文件夹,而文件夹的命名则直接关系到我们的管理效率和查找效率。如何快速、准确地批量重命名文件夹,提升工作效率呢?本文将提供一些实用的方法和技巧。现在一起来看看云炫文件管理器是如…

WPF布局控件之WrapPanel布局

前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: 后续排序按照从上至下或从右至左的顺序进行,具体取决于方向属性的值。WrapPanel 位…

WPF开源控件HandyControl——零基础教程

学习Handycontrol的过程中,为后边快速开发,写的零基础教程,尽量看完就可以实践! 参考教程 中文文档:欢迎使用HandyControl | HandyOrg Github代码:https://github.com/HandyOrg/HandyControl 使用教程:WPF-HandyControl安装和使用 - 掘金 安装配置教程 创建wpf项目 …

gorm的自动化工具gen

gorm的自动化工具gen 官方 https://gorm.io/zh_CN/gen/假设数据库结构如 这里使用gen-tool 安装 go install gorm.io/gen/tools/gentoollatest用法 gentool -hUsage of gentool:-c string配置文件名、默认值 “”、命令行选项的优先级高于配置文件。 -db string指定Driver…

04.Oracle的体系架构

Oracle的体系架构 一、主要组件二、Oracle的实例 一、主要组件 下面是一张网图,大家可以了解一下oracle的体系架构 Oracle数据库的体系架构可以分为以下几个主要组件:实例(Instance)、数据库(Database)、…

KaiwuDB 内核解析 - SQL 查询的生命周期

一、概述 KaiwuDB 内核解析系列共分上下两部分,本文是该系列的第一部分,主要涵盖了网络协议到 SQL 执行器,解释 KaiwuDB 如何执行 SQL 查询,包括系统各个组件的执行路径(网络协议、SQL 会话管理、解析器、执行计划及优…

【jvm】虚拟机栈

目录 一、背景二、栈与堆三、声明周期四、作用五、特点(优点)六、可能出现的异常七、设置栈内存大小八、栈的存储单位九、栈运行原理十、栈帧的内部结构10.1 说明10.2 局部变量表10.3 操作数栈10.4 动态链接10.5 方法返回地址10.6 一些附加信息 十一、代…

面试—如何介绍项目中的多级缓存?

项目中使用的多级缓存也就是 分布式缓存 Redis 本地缓存 Caffeine,那么令 Caffeine 作为一级缓存,Redis 作为二级缓存,在项目中通过记录数据的访问次数,将热点数据放在 本地缓存,将非热点数据放在 Redis缓存 中&#…

SMART PLC开放式以太网通信(UDP通信)

西门子S7-200 SMART PLC不仅支持开放式以太网通信,还支持MODBU-RTU,以及ModbusTcp通信,详细内容请参考下面文章: MODBUS-RTU主站通信 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客文章浏览阅读2.5k次,点赞5次,收藏10次。MODBUS通讯…

Glide transform CircleCrop()圆图,Kotlin

Glide transform CircleCrop()圆图,Kotlin import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load.resource.bitmap.CircleCropclass MainActivity : AppCompatActivity() {o…

在Windows或Mac上安装并运行LLAMA2

LLAMA2在不同系统上运行的结果 LLAMA2 在windows 上运行的结果 LLAMA2 在Mac上运行的结果 安装Llama2的不同方法 方法一: 编译 llama.cpp 克隆 llama.cpp git clone https://github.com/ggerganov/llama.cpp.git 通过conda 创建或者venv. 下面是通过conda 创建…

EXSi系统安装与使用

文章目录 EXSi系统安装与使用EXSi系统安装1.创建EXS虚拟机2.安装EXSi系统3.配置虚拟机 使用EXSi1.登录web页面2.扩充存储3.创建虚拟机4.使用虚拟机 EXSi系统安装与使用 EXSi系统安装 1.创建EXS虚拟机 创建虚拟机 2.安装EXSi系统 等待 回车 F11 回车 回车 设置密码&#xff…

并发编程: 2. 线程管控

给定一个线程,只要令std::thread对象与之关联,就能管控该线程的几乎每个细节。 2.1 线程的基本管控 2.1.1 发起线程 线程通过构建std::thread对象而启动,该对象指明线程要运行的任务(函数)。简单的任务,…

按键开发环境搭建

雷电模拟器 创建虚拟机 2.设置root权限 打开按键精灵连接虚拟机 开启悬浮 mumu模拟器操作 查找端口方法 adb connect 127.0.0.1:16416 设置-应用-所有应用-按键精灵-开启悬浮 步骤二:开启root 处理未root:中途如果有如下未root的情况&#x…

C#学习中关于Visual Studio中ctrl+D快捷键(快速复制当前行)失效的解决办法

1、进入VisualStudio主界面点击工具——>再点击选项 2、进入选项界面后点击环境——>再点击键盘,我们可用看到右边的界面的映射方案是VisualC#2005 3、 最后点击下拉框,选择默认值,点击之后确定即可恢复ctrlD的快捷键功能 4、此时可以正…

蓝鹏测控测宽仪系列又添一员大将——双目测宽仪

轧钢过程中钢板的宽度是一个重要的参数,它直接决定了成材率。同时,随着高新科技越来越广泛的应用到工程实际中,许多控制系统需要钢板实时宽度值作为模型参数。 当前,相当一部分宽厚板厂还在采用人工检测的方法,检测环境…

Gin学习笔记

Gin学习笔记 Gin文档:https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…

python学习10

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…