1.计算机系统概述

news2024/11/24 12:41:26

1.1 计算机发展历程

1.1.1计算机硬件的发展

1.逻辑元件的四代变化:

电子管->晶体管->中小规模集成电路->超大规模集成电路

第四代计算机时代产生了微处理器是微型计算机发展的标志

2. 计算机元件的更新换代

半导体存储器微处理器都在不断更新迭代。

摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将会提升一倍。

1.1.2 计算机软件的发展

计算机语言的发展:机器语言->汇编语言->面相问题的高级语言

计算机系统:出现了Windows、UNIX、Linux等等。

1.2 计算机系统层次结构

1.2.1 计算机系统的组成

硬件系统软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,软件是指在硬件上运行的程序和相关的数据及文档。

1.2.2 计算机硬件

  1. 冯诺依曼机基本思想:

(1) 采用"存储程序"的工作方式。

(2) 计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。

(3) 指令和数据以同等地位存储在存储器中,形式上没有区别。

(4) 指令和数据均用二进制代码表示。指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。

  1. 计算机的功能部件

(1)输入设备

如键盘、鼠标、扫描仪、摄像机等。

(2)输出设备

如显示器、打印机等。

(3)存储器

存储器分为主存储器(内存储器)和辅助存储器(外存储器),CPU能够直接访问的存储器是主存储器,辅助存储器用于帮助主存储器存储更多的信息,辅存中的信息必须调入主存后,才能被CPU访问。

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

(4)运算器

用于进行算术运算逻辑运算。算术运算如(加、减、乘、除);逻辑运算如(与、或、非、异或、比较、移位)。

运算器的核心是算术逻辑单元(ARrithmetic and Logical Unit,ALU)。运算器通常包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前三个是必需的。

(5)控制器

控制器由程序计数器(PC)指令寄存器(IR)控制单元(CU)组成。

PC用来存放当前欲要执行的指令,具有自动加“1”的功能。

IR用来存放当前指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用来分析指令并发出各种微操作命令序列;地址码Ad(IR)送到MAR,用来取操作数。

CPU和主存之间通过一组总线项链,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的只存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中

1.2.3 计算机软件

软件按功能分类可以分为系统软件应用软件。系统软件保证计算机系统高效、正确的运行,应用软件专门用来用户解决某个应用领域中的各类问题。

三个级别的语言:

(1)机器语言。又称为二进制代码语言。

(2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更方便记忆。

(3)高级语言。如(C、C++、Java等)

由于机器语言无法直接理解和执行高级语言程序,需要将高级语言转换为机器语言,通常把进行这种转换的软件系统称为翻译程序

三类翻译程序:

(1)汇编程序(汇编器)。将汇编语言程序翻译成及其语言程序。

(2)解释程序(解释器)。将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。

(3)编译程序(编译器)。将高级语言程序翻译成汇编语言或机器语言程序。

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

1.2.4 计算机系统的层次结构

1.2.5 计算机系统的工作原理

1.“存储程序”工作方式

2. 从源程序到可执行文件

(1)预处理阶段

预处理器(CPP)对源程序中以字符#开头的命令进行处理,例如将#include命令后面的.h文件内容插入到程序文件。输出结果是一个以.i为扩展名的源文件hello.i 。

(2)编译阶段

编译器(cc1)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s 。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。

(3)汇编阶段

汇编器(as)将hello.s翻译成机器语言指令,把这些低级指令打包生成一个称为可重定位目标文件的hello.o,它是一种二进制文件,用文本编译器打开会显示乱码。

(4)链接阶段

链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,简称可执行文件。例如:链接器将hello.o和标准库函数printf所在的可重定位目标木块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。

3. 指令执行过程

(1)取指令

PC->MAR->M->MDR->IR

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

(2)分析指令

OP(IR)->CP

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

(3)执行指令

Ad(IR)->MAR->M->MDR->ACC

取操作数。将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写控制线,从主存中取出操作数,并通过数据线送至MDR,再传送到ACC中。

每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1 -> PC 。

1.2+补充

1.2.1 知识点

冯诺依曼机的基本工作方式是控制流驱动方式

1.2.2 问题

1.什么是存储程序原理?按此原理,计算机应具有哪几大功能?

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

数据传输功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能。

1.3计算机的性能指标

1.3.1 主要性能指标

1. 字长

字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器位数有关。因此,字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8位)的整数倍。

2.数据通路宽度

数据通路宽度指数据总线一次所能并行传达信息的位数。这里的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)可能有不同。

3.主存容量

主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可以用字数*字长来表示。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。

4. 运算速度

(1)吞吐量和响应时间

吞吐量指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。

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

(2)主频和CPU时钟周期

CPU始终周期:主频的倒数,通常为节拍脉冲或T周期。

主频(CPU时钟频率):机器内部主时钟的频率。

(3)CPI:执行一条指令所需的时钟周期数。

(4)CPU执行时间:运行一个程序所花费的时间。

CPU执行时间=CPU时钟周期数/主频=(指令条数*CPI)/主频

(5)MIPS:每秒执行多少百万条指令

相对于IPS的数量级:

MFLOPS(10^6) GFLOPS(10^9) TFLOPS(10^12) PFLOPS(10^15)

EFLOPS(10^18) ZFLOPS(10^21)

注:描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示;描述速率、频率等时,K、M、G、T通常用10的幂次表示。

1.3+ 补充

1.3.1 知识点

(1)在CPU中,IR、MAR和MDR对各类程序员都是透明的。

1.3.2 问题

  1. 字、字长、机器字长、指令字长、存储字长的区别和联系是什么?

通常所说的32位、64位机器,其中32、64指的是字长也称为机器字长

字长通常是指CPU内部用于整数运算的数据通路的宽度,因此字长等于CPU内部用于用于众数运算的运算器位数和通用寄存器宽度。和字长不同,字用来表示被处理信息的单位。

指令字长:一个指令中包含的二进制代码的位数。

存储字长:一个存储单元的二进制代码的长度。

指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令;若指令字长等于等于存储字长,则取值周期数等于机器周期。

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

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

相关文章

IDEA配置maven国内源

这里写目录标题 前言注意第一步 前言 为什么要配置maven国内源, 因为如果不配置国内源,一个是依赖加载速度过慢, 另一个是可能会导致创建spring / Springboot创建失败,或者是在maven项目中引入jar包失败,从而导致项目运行失败 注意 配置要配置俩次 第一步 选择settings …

【复习8-9天内容】【我们一起60天准备考研算法面试(大全)-第十三天 13/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

数字检测Y8S

【免费】数字检测Y8S,只需要OPENCV-深度学习文档类资源-CSDN文库 采用YOLOV8训练,得到PT模型,然后直接转ONNX,使用OPENCV的DNN,不需要其他依赖,支持C/PYTHON

【CodeWhisperer】 亚马逊AI辅助代码生成工具

Amazon CodeWhisperer 定价 Amazon CodeWhisperer 直接在集成式开发环境 (IDE) 中为开发人员提供实时代码建议。个人开发人员可以免费使用 CodeWhisperer。组织为使用 CodeWhisperer 按“每位用户每月”支付固定的订阅费,无需预付费用或长期承诺。 CodeWhisperer 提…

Docker安装tomcat

docker hub上面查找tomcat镜像 docker search tomcat 从docker hub上拉取tomcat镜像到本地 docker pull tomcat docker images查看是否有拉取到的tomcat docker images 使用tomcat镜像创建容器实例(也叫运行镜像) docker run -d -p 8080:8080 tomcat 说明 -p 小写,…

GPipe:微批量流水线并行

论文标题:GPipe: Easy Scaling with Micro-Batch Pipeline Parallelism论文链接:https://arxiv.org/abs/1811.06965论文来源:Google 一、概述 如下图所示,近过去十年中,由于开发了促进神经网络有效容量扩大的方法&…

【Unity3D】伽马校正

1 伽马相关概念 1.1 人眼对亮度变化的感知 人眼对亮度变化的感知不是线性的,如下图,人眼对亮区的亮度变化不太敏感,对暗区的亮度变化较敏感。另外,我们可以想象一下,在一个黑暗的房间里,由 1 根蜡烛到 2 根…

【改进粒子群优化算法】基于惯性权重和学习因子动态调整的粒子群算法【期刊论文复现】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

面试题之MySQL事物的特性

在关系性数据库管理系统配置,一个逻辑工作要成为事物,必须要满足4个特性,即所谓的ACID:原子性(Atomicity),一致性(Consistency)、隔离性(lsolation)和持久性(Durability)。 原子性: 原子性:事物作为一个整体被执行,包含在其中对…

Redis - 为什么我要来安利你学习 Redis ?

目录 前言 一、Redis 的特性(优点) 1. Redis 是在内存中存储数据的 2.可编程性 3.可扩展性 4.持久化 5.支持集群 6.高可用 二、Redis 为什么快? 三、 Redis 使用场景 优势场景 1.将 Redis 当作数据库 2.作为缓存和存储 session …

【数据分享】1929-2022年全球站点的逐日平均压力数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 对于具体到监测站点的气象数据,之前我们分享过1929-2022年全球气象…

【LeetCode每日一题合集】2023.7.10-2023.7.16(dfs 换根DP)

文章目录 16. 最接近的三数之和排序 双指针 1911. 最大子序列交替和解法——动态规划 2544. 交替数字和(简单模拟)931. 下降路径最小和(线性DP)979. 在二叉树中分配硬币⭐⭐⭐⭐⭐(dfs)算法分析补充&#…

PWM呼吸灯+流水灯设计

完成任务: 在流水灯基础上加入pwm呼吸灯设计,关于pwm呼吸灯设计可以看博主上一篇博客PWM呼吸灯设计 ,开发板上灯每两秒进行一次切换,每一个的亮灭间隔为一秒。 代码参考: module pwm_led_change(input wire …

软件测试人员和程序开发人员是死对头吗?

这两天闲来无事刷知乎,看到有些朋友问到关于测试与开发的关系,在这里想和大家稍微来聊一聊这个事儿。 有的人说呢,测试和开发是死对头;也有人说测试和开发是处在对立面的;还有人说测试与开发两者都不能互相理解。当然&…

再战算法-奋进

再战算法-奋进 算法入门痛苦经历总结收获 算法入门 在大学期间我直至觉得【算法】是很重要的一项,最开始接触的是c语言,算是第一门接触的,给了我很大的惊喜🥰,大二下的时候开始接触到Java语言,通过Java的入…

【C++进阶】C++11基础

文章目录 一、C11简介二、统一的列表初始化1. {}初始化2、std::initializer_list 三、 声明1.auto2. decltype3.nullptr 三、范围for 一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C…

Python3实现画小提琴图(包含分组)

说在前面 Python如何画一个小提琴图呢?先看下必备的数据集合(自己构建,样式参考) 默认必有X列、Y列(数值),画分组需要包含分组的列group等数据参数准备 可以参考下面的数据样例: 除此之外,对于画图使用的参数,提前准备的知识如下: sns.violinplot所必备的参数…

数据结构-堆排序代码实现(详解)

内容:堆排序的代码实现及注解,思路详解 代码实现: 交换函数: void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; } 堆排序函数: 1 向下调整建堆函数:这里建立大堆,小堆思路也…

Litedram仿真验证(三):AXI接口完成仿真(FPGA/Modelsim)

日常唠嗑 不知不觉,从开始接触Litedram已经过去了4个月,期间断断续续做了好多其他任务,导致进度比较慢,直到前天才把Litedram完全仿真起来。(坑很多,很多东西需要注意) 目录 日常唠嗑一、AXI用…

C—数据的储存(下)

文章目录 前言🌟一、练习一下🌏1.例一🌏2.例二🌏3.例三🌏4.例四 🌟二、浮点型在内存中的储存🌏1.浮点数🌏2.浮点数存储💫(1).二进制浮点数&#x…