“第四十九天” 机组

news2024/11/18 15:51:43

        各个硬件的工作原理

主存储器包括:存储体、MAR、MDR;

MAR:存储地址寄存器 ,MAR的位数反映存储单元的个数;

MDR : 存储数据存储器,MDR位数等于存储字长;

数据在存储体内按地址存储。

存储单元:每个存储单元存放一串二进制代码;

存储字:存储单元中二进制代码的组合;

存储字长:存储单元中二进制代码的位数。

存储元:存储二进制的电子元件,每个存储元可存 1 bit;

这里要注意字和字节的区别,字节是存储单位 1Byte 是 8 bit ,而字代表的是存储单元中二进制代码的位数。

还有一个就是 B 和 b 的区别 B代表的是字节 ,b 代表的是位,这里其实倒理解100Mbps和10MBps的不同。

运算器的基本组成:ACC,MQ,ALU,X;

运算器用于实现算术运算(加减乘除等)和逻辑运算(与或非等)。

ACC:累加器,用于存放操作数,或运算结果;

MQ:乘商寄存器,在乘、除运算时,用于存放操作数或者运算结果;

X:通用的操作数寄存器,用于存放操作数;

ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算;

这里前三个都是用来存储数据的,ALU才是处理数据的。

控制器的基本组成:CU,IR,PC

CU:控制单元,分析指令,给出控制信号;

IR:指令寄存器,存放当前执行的指令;

PC:程序计数器,存放下一条指令,有自动加一功能

指令放在主存中的时包含操作码和地址码两部分;

在工作过程中,会根据pc存储的指令的地址,在主存中找到对应的二进制指令,然后返回到 IR 中,IR 会将指令中的操作码送到CU,CU经分析后,会指挥其他部件进行执行指令,如“取数”指令,分析后,IR会将指令中的地址码传给MAR,然后MAR会根据地址找到对应的数据传到MDR,若进行加法运算,这个值会再传递ACC或者X(看这个值是被加数还是加数)。

在这个过程中PC是在指令传送到IR之后进行加一的。

这里其实也可以感觉到,对于高级语言的一串简单代码,实际上反映到计算机上还是比较复杂的,

比如进行a*b+c将值赋给谁的话,计算机就要进行5次上面的操作(最后一步是停机,停机指令是利用中断机制通过操作系统终止该进程),只是在CU分析指令之后的操作有所差异,前四步都是取指令,然后第五步是分析指令,后面的执行的和指令的具体内容有关。这个用语言还蛮抽象的。

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

程序的工作过程,初始时指令和数据存入主存,PC指向第一条指令,然后从主存中去指令放入IR、PC自动加一,CU分析指令,之后指挥其他部件执行指令。

现在的计算机通常把MAR、MDR也集成在CPU内。

        计算机系统的多层次结构

最底层的是 微程序机器 M0(微指令系统),就是上面的那个,由硬件直接执行微指令;

然后是 传统机器 M1(用机器语言的机器),这个对应的是执行二进制机器指令;

上面这两种属于硬件层次,下面的属于软件层次。

虚拟机器 M2 (操作系统机器),向上提供“广义指令”(系统调用);

虚拟机器 M3汇编语言机器),用汇编程序翻译成机器语言程序,汇编语言指令和机器语言指令一一对应;

虚拟机器 M4(高级语言机器),用汇编程序翻译成汇编语言程序;

        三种级别的语言由高到低分别是 高级语言,也就是我们目前使用的 c,Java等,然后是汇编语言,是一些助记符,如 LOAD 5,MUL 6等,最下面是机器语言,也就是二进制代码。       

        高级语言的源程序(编译程序)可以通过编译器编译成汇编程序,然后经过汇编器变成机器语言程序,也可以通过编译器直接变成机器语言程序,或者通过解释器将源程序(解释程序)变成机器语言程序,如Javascript,python,shell等,但编译程序和解释程序还是有区别的。

编译程序是将高级语言编写的源程序全部语言一次全部翻译成机器语言程序,而后在执行机器语言程序(只需要翻译一次);而解释程序则是将源程序的一条语句翻译成对应于机器语言的语句,并立即执行,紧接着再翻译下一句(每次执行都要翻译)。

        计算机性能指标

存储器的性能指标

总容量 = 存储单元个数 * 存储字长 (bit)=存储单元个数 * 存储字长 / 8 (Byte)

MAR位数反映存储单元的个数(最多支持多少个),这里实际上在之前C语言中已经提到过,计算机通过地址管理内存,位数的多少决定了地址数目的多少;

MAR位数等于存储字长,也就是每个存储单元的大小,实际上就是计算机用一个地址管理多大的地方,使用总容量等于存储单元个数乘以存储字长,前面是自己能管几块地,后面是一块地有多大,两者相乘就是自己管理地的总大小。

cpu的性能指标:

cpu主频:cpu内数字脉冲信号振荡的频率;

梳子脉冲信号来回一次的时间称为cpu时钟周期;

cpu主频(时钟频率)等于1/cpu时钟周期;

CPI是执行一条指令所需的时钟周期数;不同的指令,CPI不同,甚至相同的指令,CPI也可能有变化。执行一条指令的时间等于CPI*CPU时钟周期

cpu执行程序的时间 = 指令条数 * CPI / 主频;

IPS:每秒执行多少指令 ,IPS=主频/平均CPI

FLOPS:每秒执行多少次浮点运算;

        系统整体的性能指标:

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

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

响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应,并获取它所需要的结果的等待时间。通常包括cpu的时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。

这里需要说明的是主频高的cpu不一定比主频低的cpu快,因为处理指令的速度还和CPI有关(处理一条指令所需的时钟周期数),即使平均CPI相同,主频快的也不一定更快,还要看指令系统,如过前置不支持乘法指令,那就只能用多次加法实现乘法,而如果后者支持乘法指令,两者的快慢也未必。

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

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

相关文章

【Opencv】OpenCV使用CMake和MinGW的编译安装出错解决

编译时出现的错误: mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:161: recipe for target ‘all’ failed mingw32-make: *** [all] Error 2解决方法: 根据贴吧老哥的解答,发现是mingw版本有问题导…

合并有序链表C++递归

题目描述 21. 合并两个有序链表 - 力扣(LeetCode) 解题思路 我们这里使用递归的思路来解题: 首先我们要分析题目的子问题在哪,对于这个问题我们先思考如何将两个只有一个节点的有序单链表合并: ①我们可以先判断哪一个…

DCU上如何运行大模型以及用到的docker命令

第一步:需要连接到官方(https://developer.hpccube.com/)提供的vpn 第二步:通过termius进入到项目 第三步:遇到问题 1.docker空间太小了,得换地方:参考这个centos设置docker 目录_mob64ca12f73101的技术博客_51CTO博…

寻找特殊年号

系列文章目录 进阶的卡莎C_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(C…

正点原子嵌入式linux驱动开发——Linux INPUT子系统

按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了input框架,用户只需要负责上报输入事件,比如按键值、坐标等…

python二次开发Solidworks:读取样条曲线数据

目录 1、草图段对象 2、VBA代码分析 3、python代码实现 样条曲线(spline curve)是数学术语,是一种特殊的参数曲线,由一组控制点通过曲线拟合的方式生成。样条一词源于船舶建造中的一种临时性辅助支架,后来被引入计算…

基于卷的磁盘扫描算法设计

1、设计目的 常规情况下,当我们扫描计算机的硬盘时, 通常会使用诸如FindFirstFile/FindNextFile(Windows),或者opendir/readdir(Linux)遍历扫描的目录。 一般情形下,由于文件数量相对较少,文件夹层次低,扫…

Hafnium简介和构建

安全之安全(security)博客目录导读 目录 一、Hafnium简介 二、Hafnium构建 2.1.1 先决条件 2.1.1.1 构建Host 2.1.1.2 工具链 2.1.1.3 依赖 2.1.1.4 获取源码 2.1.2 构建 一、Hafnium简介 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人…

MSVCR100.dll丢失修复方法,MSVCR100.dll丢失的解决方法

今天我要和大家分享的是:msvcr100.dll丢失的6种解决方法。 首先,让我们来了解一下msvcr100.dll丢失的原因。msvcr100.dll是Microsoft Visual C 2010的一个组件,它包含了许多运行库文件,这些文件是许多应用程序所必需的。当msvcr1…

TouchGFX界面开发 | 图像控件应用示例

图像控件应用示例 TouchGFX中的图像会绘制关联图像文件中的像素数据。 使用图像文件前,必须将其导入到项目中。TouchGFX Designer内置了五种类型的图像部件: 固定图像:图像大小是由关联的图像文件定义的,不能在运行时改动。若要将…

物联网AI MicroPython传感器学习 之 GPS户外定位模块

学物联网,来万物简单IoT物联网!! 一、产品简介 HT2828Z3G5L是一款高性能的面向车载组合导航领域的定位G-MOUSE,系统包含同时支持北斗和GPS的高性能卫星接收机芯片。具备全方位功能,能满足专业定位的严格要求。体积小巧…

【数据结构】常见复杂度习题详解 ------ 习题篇

文章目录 📋前言一. ⛳️前篇回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5️⃣实例五6️⃣实例六7️⃣实例七8️⃣实例八 三. ⛳️常见空间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三 四. ⛳️总结 📋前言 …

GIS 数据结构整理:网格索引

1 一维网格索引 把整个数据库数值空间划分成n*n的正方形网格,建立另一个倒排文件——栅格索引每一个网格在栅格索引中有一个索引条目(记录),在这个记录中登记所有位于或穿过该网格的物体的关键字 1.1 变长指针法 在这个网格的物体,按照序号…

2023年系统设计面试如何破解?进入 FAANG 面试的实战指南

如果您正在准备编码面试,但想知道如何准备关键的系统设计主题,并寻找正确方法、技巧和问题的分步指导,那么您来对地方了。在本文中,我将分享 2023 年系统设计面试的完整指南。 在软件开发领域,如果您正在申请高级工程…

『Linux升级路』权限管理

🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、Linux中的用户 📒1.1Linux用户分类 📒1.2用户转换…

网络编程 day3

#include <head.h> #define SER_PORT 6678 //服务器端口号 #define SER_IP "192.168.115.64"//服务器IP地址 #define CLI_PORT 6666 //客户端端口号 #define CLI_IP "192.168.115.93" int main(int argc, const char *argv[]) {//1.创建套接字,用于连…

css-边框流水线

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, user-scalableno" /><title></title><style type&…

eNSP笔记③

密码模式 Telnet ①首先进入console口 [Huawei]user-interface console 0②设置模式为密码模式,回车后输入密码 [Huawei-ui-console0]authentication-mode password ③设置对应权限3 [Huawei-ui-console0]user privilege level 3用户级别允许使用的命令级别进入系统视图保存…

基于国产ARM+FPGA+AD的验证和生产测试自动化

TestStand是一款测试执行软件&#xff0c;可帮助工程师在验证和生产环节加速开发和部署系统。 验证和生产测试自动化 TestStand可借助自身功能特性&#xff0c;实现用户所有测试系统中整个测试过程的自动化、提速和标准化: 调用和执行使用LabVIEW、Python、C/C或.NET编写的测…

【API篇】八、Flink窗口函数

文章目录 1、增量聚合之ReduceFunction2、增量聚合之AggregateFunction3、全窗口函数full window functions4、增量聚合函数搭配全窗口函数5、会话窗口动态获取间隔值6、触发器和移除器7、补充 //窗口操作 stream.keyBy(<key selector>).window(<window assigner>)…