计算机系统体系结构

文章目录

  • 计算机系统体系结构
    • 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.mfbz.cn/a/363368.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APT攻击是什么?如何进行防护

随着网络技术的飞速发展&#xff0c;APT&#xff08;Advanced Persistent Threat&#xff09;攻击已经成为网络安全领域的一个重大问题。APT攻击是一种高度复杂的网络攻击&#xff0c;其目标是长期潜伏并逐步深入到目标网络中&#xff0c;以窃取敏感信息、破坏关键基础设施或制…

如何有效获取 Go 变量类型?探索多种方法

嗨&#xff0c;大家好&#xff01;本文是系列文章 Go 小技巧第九篇&#xff0c;系列文章查看&#xff1a;Go 语言小技巧。 文章目录 Go 的类型系统类型获取使用 fmt.Printf类型选择类型选择反射 reflect.TypeOf 其他注意点错误处理性能考量 总结 在 Python 中&#xff0c;可以使…

AI绘画探索人工智能的未来

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-8fL64RHWVzwpzR6m {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

spdk技术原理简介和实践经验

一、导读 与机械硬盘相比&#xff0c;NVMe-ssd在性能、功耗和密度上都有巨大的优势&#xff0c;并且随着固态存储介质的高速发展&#xff0c;其价格也在大幅下降&#xff0c;这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多&…

C语言指针学习(1)

前言 指针是C语言中一个重要概念&#xff0c;也是C语言的一个重要特色&#xff0c;正确而灵活地运用指针可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人都应当深入的学习和掌握指针&#xff0c;也可以说不掌握指针就没有掌握C语言的精华。 一、什么是指针 想弄清楚什…

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)将于2024年6月21-23日在中国厦门举办。 SEAI旨在为软件工程与人工智能领域搭建高端前沿的交流平台&#xff0c;推动产业发展。本次会议将汇聚海内外的知名专家、学者和产业界优秀人才&#xff0c;共同围绕国际热点话题、核…

cesium-场景出图场景截屏导出图片或pdf

cesium把当前的场景截图&#xff0c;下载图片或pdf 安装 npm install canvas2image --save npm i jspdf -S 如果安装的插件Canvas2Image不好用&#xff0c;可自建js Canvas2Image.js /*** covert canvas to image* and save the image file*/ const Canvas2Image (function…

红队渗透靶机:LEMONSQUEEZY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录扫描 1、dirsearch 2、gobuster WEB phpmyadmin wordpress wpscan 登录wordpress 登录phpmyadmin 命令执行 反弹shell 提权 get user.txt 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~…

PRBS并行输出

PRBS&#xff08;Pseudo-Random Binary Sequences&#xff09;是通过LFSR和特征函数 伪随机数发生器产生的伪随机数序列&#xff0c;通常用于高速数字通信测试。 基本电路&#xff08;单比特输出&#xff09; prbs N表示用N比特lfsr尝试伪随机数序列&#xff0c;常用的有N7,9…

win10查看Nvidia显卡、cuda版本

通过cmd命令行查看 打开cmd命令行窗口&#xff0c;在命令行输入&#xff1a; nvidia-smi 即可看到相应的显卡信息&#xff0c;以及显卡支持的cuda版本。 如下图所示&#xff0c;可以看到显卡是"GeForce CTX 1650"&#xff0c;cuda版本是11.7

Mac brew教程

一、安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"二、查看brew版本 brew -vbrew -v 三、搜索软件 命令格式&#xff1a;brew search 软件名 eg&#xff1a; brew search nginx四、安装软件 命令格…

Springboot + EasyExcel + Vue 实现excel下载功能

一、添加EasyExcel依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency> 二、后端代码示例 controller&#xff1a; GetMapping("/download&quo…

SwiftUI 动画入门之一:路径动画(Path Animations)

概览 在 SwiftUI 的开发中,我们往往需要使用千姿百态的动画把我们的界面元素妆点的更加鲜活灵动。 如上图所示,我们使用路径动画使折线图更加生动了!这是怎么做到的呢? 在本篇博文中,您将学到以下内容: 概览1. 路径与形状(Path and Shape)2. 路径动画的原理3. 让路径…

Springboot 批量增加redis中的数据,并批量设置过期时间

1. 背景 一个功能需要一次性解析大量数据放到 Redis 中缓存&#xff0c;并且每个 key 都需要设置过期时间&#xff0c;但是 Redis 本身命令不支持批量设置过期时间&#xff0c;RedisTemplate 中也没有相关的方法。 2. 实现方式 1. RedisTemplate 使用 redisTemplate.opsForV…

工业物联网接入网关在制造企业的实际应用-天拓四方

随着工业4.0和智能制造的兴起&#xff0c;工业物联网&#xff08;IIoT&#xff09;已成为工厂自动化的关键驱动力。在这个转变中&#xff0c;工业物联网网关扮演着至关重要的角色。它们充当了设备与企业系统之间的桥梁&#xff0c;实现了数据采集、分析和设备控制等功能。 案例…

linux安装mysql客户端--极速成功版

翻了无数个帖子都没有安装好&#xff0c;遇到了各种各样奇奇怪怪的问题。结果看了菜鸟教程的步骤&#xff0c;一路顺利&#xff0c;5分钟装完。 1、安装前&#xff0c;检测系统是否自带安装 MySQL rpm -qa | grep mysql2、安装mysql 下载 wget http://repo.mysql.com/mysql-…

Modbus协议学习第六篇之基于libmodbus库的示例程序(可以联合Modbus模拟仿真软件进行调试)

前置工作 学了这么多Modbus的知识&#xff0c;如果不进行实际的操作&#xff0c;总感觉懂的不透彻。基于此&#xff0c; 本篇博文就带各位读者来了解下如何通过编写程序来模拟与Modbus Slave仿真软件的通讯。当然了&#xff0c;这里有两个前提&#xff0c;如下&#xff1a; 1.请…

【AutoCAD2023】删除验证组件+桌面应用程序+登陆组件方法

Autodesk删除验证组件桌面应用程序登陆组件方法&#xff1a; :: 建议在安装前找到官方安装包释放后的安装文件所在位置 例如&#xff1a;AutoCAD_2023_Simplified_Chinese_Win_64bit_dlm 删除验证组件Autodesk Genuine Service -> x64\AGS (必删) 删除桌面程序Autodesk Desk…

2023安防行业十件大事,一定有你关心的

2023年对我国安防行业来说&#xff0c;可以说是既充满希望又充满不确定性的一年。经历三年的市场低迷&#xff0c;2023年安防市场开始逐渐回暖&#xff0c;行业景气度缓慢上升。 那么&#xff0c;2023年我国安防行业都发生了哪些值得铭记的大事&#xff1f;哪些事件对安防产业…

浏览器内存泄漏排查指南

1、setTimeout执行原理 使用setInterval/setTimeOut遇到的坑 - 掘金 2、Chrome自带的Performance工具 当我们怀疑页面发生了内存泄漏的时候&#xff0c;可以先用Performance录制一段时间内页面的内存变化。 点击开始录制执行可能引起内存泄漏的操作点击停止录制 如果录制结束…
最新文章