计算机系统体系结构

news2024/10/6 1:46:56

文章目录

  • 计算机系统体系结构
    • 1. 什么是计算机体系结构
      • 术语解释
      • 计算机系统体系结构所涉及的内容
      • 简单通用计算机结构
      • 计算机指令
      • 程序执行过程
      • 时钟
    • 2. 计算机的发展
      • 机械计算机
      • 机电式计算机
      • 早期电子计算机
      • 微机和PC革命
      • 移动计算和云计算
      • 摩尔定律
      • 乱序执行
    • 3. 存储程序计算机
      • 寄存器传输语言(RTL)
      • 存储程序的概念
      • 指令格式
        • 三操作指令
        • 两地址指令
        • 单地址指令
      • 计算机分类
    • 4. 计算机系统概览
      • 存储层次
      • 总线

计算机系统体系结构

1. 什么是计算机体系结构

计算机体系结构描述了程序员视角中的计算机,它是一个抽象的计算机模型,定义了计算机的指令集、寄存器、数据类型等。体系结构与计算机的实际硬件实现(计算机组成)是分开的,它关注的是如何高效地执行程序,而不考虑硬件的具体实现细节。

术语解释

  • 指令集体系结构(ISA):描述了程序员看到的计算机的抽象视图,定义了汇编语言和编程模型。
  • 微体系结构:描述了一种指令集体系结构的具体实现方式,关注计算机的内部设计。
  • 系统体系结构:关注包括处理器、存储器、总线和外设在内的整个系统。

计算机系统体系结构所涉及的内容

请添加图片描述

  • 中央处理单元(CPU):执行程序的部件。
  • 存储器系统:保存程序和数据,包括Cache、主存、辅存等。
  • 输入输出子系统:使CPU与外部设备(如显示器、打印机)通信。

简单通用计算机结构

  • 存储器层次:包括Cache、主存、辅存等,用于提高数据访问速度。
  • 总线:连接计算机各功能单元,允许数据交换。
  • 寄存器:CPU内部的高速存储单元,用于存放数据。

计算机指令

  • 基本指令:如MOV(移动)、LOAD(加载)、STORE(存储)、ADD(加法)、TEST(测试)、BEQ(等于时跳转)等。

程序执行过程

  • 指令执行:CPU从存储器读取指令,执行后可能需要读取数据,最后可能写回结果。
  • 指令格式:包括操作码和操作数地址,操作数可以是寄存器或存储器地址。

请添加图片描述

在上图中,从存储器中读出一条Z=X+Y的指令,将其发送给解释单元,解释单元产生控制信号,驱动这条指令的执行。假定这个程序的功能是从存储器读出两个数据(X和Y),将它们相加,然后写回存储器。

要执行这个程序,CPU必须首先从存储器中取出一条指令,在CPU分析或解码这条指令后,从存储器中读出这条指令所需的所有数据。

  • 第一条指令,LOAD X,从存储器中读出变量X的值,并将它暂存在寄存器中。
  • 第二条指令,LOAD Y,从存储器中读出变量Y的值,并保存在另一个寄存器中。
  • 第三条指令,Z=X+Y,将两个寄存器的内容相加,并将结果保存在第三个寄存器中。
  • 第四条指令,STORE Z,将加法的结果写回存储单元Z。

时钟

绝大多数数字电子电路都带有一个时钟,用以生成连续的间隔固定的电脉冲流。

之所以被称作时钟,是因为可用这些电脉冲来计时或确定计算机内所有事件的顺序。如,处理器可能会在每一个时钟脉冲到来时执行一条新指令

2. 计算机的发展

机械计算机

机械计算机的历史可以追溯到古代,当时的人们使用算盘进行计算。但真正意义上的机械计算机出现在19世纪,由查尔斯·巴贝奇设计的差分机和分析机。尽管它们从未被完全制造出来,但它们的设计理念影响了计算机的发展。

机电式计算机

机电式计算机是计算机历史上的一个重要阶段,它们使用电气和机械设备进行计算。例如,赫尔曼·霍尔雷斯设计的塔布拉图机,这是一种自动化的打孔卡机械计算机。另一个例子是哈佛马克一号,这是一种大型电动机械计算机。

早期电子计算机

二战期间,计算机技术取得了重大突破,出现了一批电子计算机。例如,英国的科尔斯斯机,用于破解德国的恩尼格玛密码。美国的ENIAC(电子数值积分计算机),是世界上第一台通用电子计算机。

微机和PC革命

20世纪70年代,微处理器的发明使得计算机可以变得更小、更便宜、更强大。这使得个人计算机(PC)成为可能。IBM的PC和苹果的Apple II是这个时期的代表作。

20世纪80年代和90年代,微软的Windows操作系统和因特网的普及,使得PC进一步普及,成为日常生活和工作的必需品。

移动计算和云计算

21世纪,移动设备(如智能手机和平板电脑)和云计算的兴起,进一步改变了计算的方式。现在,我们可以随时随地进行计算,而且可以利用云计算的强大计算能力进行大规模的数据处理。

计算机的发展仍在继续,例如量子计算、人工智能等新技术正在改变我们的生活和工作。

摩尔定律

摩尔定律是由英特尔公司的创始人之一戈登·摩尔在1965年提出的。他预测,集成电路上可容纳的晶体管数量,大约每两年会翻一番。这意味着计算机的性能大约每两年会翻一番。这个预测在过去的几十年中基本上得到了验证,推动了计算机技术的快速发展。

然而,近年来,随着晶体管尺寸接近物理极限,摩尔定律的速度已经开始放缓。这引发了对新计算技术,如量子计算和神经计算的研究。

乱序执行

乱序执行是一种在计算机中提高指令执行效率的技术。在乱序执行中,处理器会在指令流中查找可以并行执行的指令,然后按照优化的顺序执行这些指令。这样可以充分利用处理器的计算资源,提高执行效率。

乱序执行是现代超标量和超线程处理器的重要技术之一。它需要复杂的硬件支持,包括指令调度器、寄存器重命名和重排序缓冲区等。

乱序执行技术使得现代处理器能够在单个时钟周期内执行多个指令,大大提高了处理器的性能。但是,它也带来了一些挑战,例如处理器设计的复杂性和功耗问题。

3. 存储程序计算机

请添加图片描述

这幅图叫作存储器映射,它展示了信息在存储器中的存放位置。它是存储器的一幅快照,因为它表示存储器在某个特定时刻的状态。存储器映射也包含程序使用的变量和数字串。

存储器中的每个位置要么保存了指令要么保存了数据元素。第一列中的数字0~37为地址,代表了数据元素和指令在存储器内的存放位置(地址从0而不是1开始,因为0是一个合法的标识符)。

程序位于地址0~16的位置,变量位于地址17~20的位置,而数据(串)位于地址21~37的位置。可以将计算机的存储器视作一个数据元素的表格——每个元素的位置就是它的地址。例如,地址为4的存储单元保存了指令“将Max_Run置为1”而地址为20的存储单元保存了元素Max_Run的值。17行及其后面的各行使用了粗体字,表明它们保存了变量以及要处理的数串。

寄存器传输语言(RTL)

使用RTL描述计算机内部操作。

在RTL语言中,用方括号[ ]表示存储单元的内容,如

[15] = Max_Run

含义是:地址为15的存储单元保存了变量Max_Run的值 左箭头符号表示数据传送操作,如

[15]<–[15] + 1

含义是:将地址为15的存储单元的值加1,并将结果写回地址为15的存储单元

存储程序的概念

下面的伪代码描述了存储程序计算机的基本操作:

存储程序计算机

 	程序计数器指向存储器中的第一条指令

	 REPEAT

 		从程序计数器所指的存储单元中读出指令

		修改程序计数器,使之指向下一条指令

 		将从存储器中取出的指令解码

 		执行指令

 	FOREVER
 	
End

从存储器中取出每条指令都需要进行一次访存操作(即读存储器)。

可以用下面的伪代码描述“执行指令”这一动作:

 执行指令

 	IF 指令需要使用数据

 		THEN 从存储器中读这个数

 	END_IF

 	完成指令定义的操作

 	IF 指令要将数据写回存储器

 		THEN 将数据写回存储器

 	END_IF

 End

执行一条指令需要至少两次访存,第一次访存是读取指令,第二次访存要么从存储器读出指令需要的数据,要么将它之前的指令产生的或修改过的数据写回存储器。

指令格式

三操作指令

ADD P,Q,R是一条典型的三操作数指令,P、Q、R是三个存储单元地址的符号名。

这个三操作数指令格式用RTL表示为:
请添加图片描述

请添加图片描述

请添加图片描述

如图,描述了指令的4个字段与CPU、存储器以及指令的执行方式之间的关系

两地址指令

有些计算机实现了两地址指令,其格式为:

请添加图片描述

Address2为源操作数,Address1既是源操作数也是目的操作数。

指令ADD P,Q的RTL定义为:

请添加图片描述

  • 两地址指令会破坏它的一个操作数,也就是说,会用结果替换源操作数P在实际计算机中。
  • 一般不允许同一条指令中使用两个存储地址,大多数计算机都规定一个地址是存储器地址,另一个地址是寄存器。
单地址指令

有些计算机实现单地址指令,其格式为:

请添加图片描述

指令中只提供了一个操作数地址,而指令却需要至少两个地址,处理器不得不使用一个不需要显示地址的第二操作数,第二个操作数来自CPU内一个叫累加器(accumulator)的寄存器。

请添加图片描述

如图,描述了一条单操作数指令执行过程中的信息流,操作结果将一直保存在寄存器中,直到另一条指令将它送入存储器。

计算机分类

可以按照计算机的指令处理数据的方式对计算机分类

  • 存储器-存储器型:一条指令能够从存储器中读出源操作数,对数据完成某个操作,并将结果保存在存储器中
  • 寄存器-存储器型:能够处理两个数据,其中一个位于存储器中,另一个位于寄存器中,结果要么被写回存储器,要么被写回寄存器,如Intel IA32 CPU体系结构
  • 寄存器-寄存器型:只能对寄存器中的内容进行操作,这些计算机必须通过LOAD指令将数据读入寄存器并使用STORE指令将数据从寄存器送回存储器。由于LOAD 和STORE操作是仅有的存储器访问指令,这些计算机也被称为load/store 型计算机,如ARM和MIPS CPU体系结构。

4. 计算机系统概览

存储层次

  • 寄存器:存放处理器的工作数据

  • Cache:缓存常用数据的快速存储器

  • DRAM:存放工作数据

  • 硬盘:保存程序和数据

请添加图片描述

总线

节点之间的互连通过总线完成,公共总线将所有单元连接在一起,只有一条高速数据通路,每个单元通过一个接口与这条通路相连。

请添加图片描述

缺点:

每次只有唯一一个设备能够与其它设备通信,因为这里只有一条信息通路。如果两个设备同时请求使用总线,它们不得不去竞争总线的控制权。用术语仲裁来描述多个设备竞争同一资源的过程。

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

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

相关文章

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

目录 参考前面发的几篇文章http识别车牌&#xff0c;sqlite3数据库、摄像头的文章 步骤 部分代码 新建一个项目&#xff0c;加入前面用到的http和image两个文件&#xff0c;和加入用到的模块和头函数和成员&#xff0c;加入前面用到的全局变量 配置ui界面 在构造函数中初…

sql指南之null值用法

注明&#xff1a;参考文章&#xff1a; SQL避坑指南之NULL值知多少&#xff1f;_select null as-CSDN博客文章浏览阅读2.9k次&#xff0c;点赞7次&#xff0c;收藏21次。0 引言 SQL NULL&#xff08;UNKNOW&#xff09;是用来代表缺失值的术语&#xff0c;在表中的NULL值是显示…

微服务入门篇:Ribbon负载均衡(原理,均衡策略,饥饿加载)

目录 1.负载均衡原理2.负载均衡策略3.饥饿加载 1.负载均衡原理 在使用 LoadBalanced 注解后&#xff0c;Spring Cloud Ribbon 将会为 RestTemplate 添加负载均衡的能力。 负载均衡的流程如下&#xff1a; 当使用 RestTemplate 发送请求时&#xff0c;会先判断请求的 URL 是否包…

03、全文检索 -- Solr -- Solr 身份验证配置(给 Solr 启动身份验证、添加用户、删除用户)

目录 全文检索 -- Solr -- Solr 身份验证配置启用身份验证&#xff1a;添加用户&#xff1a;删除用户&#xff1a; 全文检索 – Solr – Solr 身份验证配置 学习之前需要先启动 Solr 执行如下命令即可启动Solr&#xff1a; solr start -p <端口>如果不指定端口&#xf…

保姆级的指针详解(超详细)

目录 一.内存和地址  1.初识指针 2.如何理解编址 二. 指针变量 三.指针的解引用操作符 1.指针变量的大小 四.指针变量类型的意义 五.指针的运算 1.指针加减整数 2.指针减指针 3.野指针 3.1指针未初始化 3.2指针越界访问 3.3指针指向的空间被提前释放 3.4如何规…

05:容器镜像技术揭秘|发布容器服务器|私有镜像仓库

容器镜像技术揭秘&#xff5c;发布容器服务器&#xff5c;私有镜像仓库 创建镜像使用commit方法创建自定义镜像。Dockerfile打包镜像创建apache服务镜像制作 php 镜像 微服务架构创建nginx镜像 发布服务通过映射端口发布服务容器共享卷 docker私有仓库 创建镜像 使用commit方法…

Mac用Crossover玩《幻兽帕鲁》手柄不能用怎么办? Mac电脑玩《幻兽帕鲁》怎么连接手柄? 幻兽帕鲁玩家超1900万

2024年首款爆火Steam平台的游戏《幻兽帕鲁》&#xff0c;在使用Crossover后可以用Mac系统玩了&#xff0c;很多玩家喜欢通过手柄玩游戏&#xff0c;它拥有很好的握持体验&#xff0c;长时间玩也不会很累&#xff0c;所以很多《幻兽帕鲁》玩家都喜欢用手柄来操作&#xff0c;很多…

idea 中 tomcat 乱码问题修复

之前是修改 Tomcat 目录下 conf/logging.properties 的配置&#xff0c;将 UTF-8 修改为 GBK&#xff0c;现在发现不用这样修改了。只需要修改 IDEA 中 Tomcat 的配置就可以了。 修改IDEA中Tomcat的配置&#xff1a;添加-Dfile.encodingUTF-8 本文结束

大路灯有必要买吗?五款年度好用大路灯推荐

随着人们生活水平上升&#xff0c;对健康的关注度也不断提高&#xff0c;护眼灯的需求也越来越多。而护眼落地灯作为一种新型的照明产品&#xff0c;具有独特的优点。护眼落地灯采用柔和的自然光源&#xff0c;能有效减少眼睛疲劳和视力损伤&#xff0c;提高工作和学习的效率。…

消息中间件特性

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

亚信安全助力宁夏首个人工智能数据中心建成 铺设绿色算力安全底座

近日&#xff0c;由宁夏西云算力科技有限公司倾力打造&#xff0c;亚信安全科技股份有限公司&#xff08;股票代码&#xff1a;688225&#xff09;全力支撑&#xff0c;总投资达数十亿元人民币的宁夏智算中心项目&#xff0c;其一期工程——宁夏首个采用全自然风冷技术的30KW机…

软考高项十大管理49个过程记忆口诀

一、十大管理口诀 口诀&#xff1a;范进整狗子&#xff0c;成人风采干 内容&#xff1a;范围管理、进度管理、整合管理、沟通管理、质量管理、成本管理、资源管理、风险管理、采购管理、干系人管理 二、49个过程口诀 1、整合管理 口诀&#xff1a;按章程计划指导知识、监控…

Java打印图形 九九乘法表

目录 双重循环九九乘法表打印长方形打印平行四边形打印三角形打印菱形打印空心菱形 三重循坏百钱买百鸡 双重循环 九九乘法表 在Java中&#xff0c;你可以使用嵌套的for循环来打印九九乘法表。以下是一个简单的示例&#xff1a; public class Main {public static void main…

wordpress找不回密码怎么办?4种方法设置新密码

有些WordPress站长太久不登录后台了&#xff0c;所以就忘记了管理员登录密码&#xff0c;这种情况我们应该怎么找回密码呢&#xff1f;或者设置一个新密码呢&#xff1f;下面boke112百科就跟大家分享4种方法设置WordPress新密码。 方法一、登录页面的“忘记密码&#xff1f;”…

React + react-device-detect 实现设备特定的渲染

当构建响应式网页应用时&#xff0c;了解用户正在使用的设备类型&#xff08;如手机、平板或桌面&#xff09;可以帮助我们提供更优化的用户体验。本文将介绍如何在 React 项目中使用 react-device-detect 库来检测设备类型&#xff0c;并根据不同的设备显示不同的组件或样式。…

用Python处理TDC激光测距数据并绘制为图片

用Python处理TDC激光测距数据并绘制为图片 说明一、定义全局变量变二、主函数入口三、处理原始文件数据四、将数据叠加统计生成图片五、额外的辅助函数六、将数据进行各种形式统计叠加七、原始数据形式八、 测试结果 说明 1. 主要是将TDC激光测距数据进行统计叠加并绘制为图片…

网络原理-TCP/IP(3) - 三次握手超详解析

TCP协议 连接管理 TCP的连接是虚拟的,抽象的,目的是让通信双方保存对方信息.在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接. 之前我们在网络编程中的 socket new Socket(ip, port); 这个操作就是建立连接.而这个操作知识调用了socket的api,真正建立的过程,是在…

FW如何区别 PAW3212DB-TJDT 和 PAW3220DB-TJDL/TJDR/TJDS

PAW3212DB-TJDT 和 PAW3220DB-TJDL/TJDR/TJDS 的引脚功能定义是一样的&#xff0c;只是封装有一点不一样。PAW3212DB-TJDT是圆形火山口&#xff0c;配的是圆孔透镜&#xff0c;PAW3220DB-TJDL/TJDR/TJDS是方形火山口&#xff0c;配的是方孔透镜。 PAW3212DB-TJDT 和 PAW3220DB-…

杂题——试题-算法训练-P0602

分析&#xff1a; 把要重排序的数字转成数组对数组进行排序&#xff0c;从小到大排序数组转成字符串&#xff0c;字符串转成数字&#xff0c;得到最小数再把最小数的字符串反转&#xff0c;得到最大数注意&#xff1a; 在java语言中&#xff0c;如果使用Arrays.toString(digits…

C++之平衡二叉搜索树查找

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;我是PingdiGuo&#xff0c;今天我们来学习平衡二叉搜索树查找。 目录 1.什么是二叉树 2.什么是二叉搜索树 3.什么是平衡二叉搜索树查找 4.如何使用平衡二叉搜索树查找 5.平衡二叉…