【计组】计算机系统概述

文章目录

    • 前言
    • 正文
      • 计算机的发展历程
        • 什么是计算机系统
        • 硬件的发展历程
        • 软件的发展
      • 计算机硬件的基本组成
        • 冯诺依曼体系结构(存储程序型电脑)
        • 现代计算机的结构
      • 各硬件的工作原理
        • 主存储器的基本组成
        • 运算器的基本组成
        • 控制器的基本组成
        • 计算机的工作过程
      • 计算机系统的层次结构
      • 计算机的性能指标
        • 存储器的性能指标
        • CPU的性能指标
        • 系统整体的性能指标
    • 结语

前言

​ 从本篇文章开始学习计算机组成原理的知识,此系列博客将会记录博主学习的知识和学习过程中产生的问题。

正文

​ 在我们之前对于编程语言和操作系统的学习中,我们经常会产生一种知其然而不知其所以然的感觉,可能会产生出许多问题,数字、文字、图像如何使用二进制表示?计算机如何从内存中取出想要的数据?CPU如何识别和执行我们写的程序?诸如此类的问题有很多,这些问题需要我们去探索计算机更深层次的组成和实现原理。于是我们今天开始学习计算机组成原理的知识,首先这篇博客我们来大概的认识一下计算机系统。

计算机的发展历程

什么是计算机系统

​ 计算机系统通常可以分为硬件和软件。硬件是计算机的实体,如主机、外设等,软件是由具有各类特殊功能的程序组成。而计算机性能的好坏取决于软件和硬件功能的总和。

​ 其中软件可以分为系统软件和应用软件。前者用于管理整个计算机系统,最典型的例子就是我们的操作系统,它控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,是非常重要的系统软件。后者是按人物需要编制成的各种程序,就比如说我们生活中常见到的抖音、QQ、微信等都属于应用软件。

硬件的发展历程

​ 至今的计算机硬件的发展历程大致可以分为以下四个阶段:

  1. 电子管时代(1940年代 - 1950年代):早期计算机使用电子管作为逻辑元件。电子管的特点是体积大、功耗高、易损坏、散热困难,但是它们为早期计算机提供了逻辑功能,并开创了计算机技术的先河。
  2. 晶体管时代(1950年代 - 1970年代):晶体管的发明标志着计算机硬件发展的新阶段。晶体管比电子管更小、更耐用、功耗更低,并且散热效果更好。这一时代见证了计算机的迅速发展,使得计算机规模和性能不断提升。
  3. 中规模集成电路时代(1970年代 - 1990年代初期):这一阶段的集成电路包含的元件数量相对较少,通常在数百到数千个之间。主要的应用包括存储器芯片、微处理器和各种接口芯片。虽然这些集成电路已经带来了巨大的性能提升和成本降低,但与后来的超大规模集成电路相比,其集成度较低,因此性能和功能也相对有限。
  4. 大规模超大规模集成电路时代(1990年代初期至今):随着技术的不断进步,集成电路中可以容纳的元件数量不断增加,从数千个增加到数十亿个甚至更多。这一阶段的集成电路被称为大规模集成电路(Large Scale Integration,LSI)和超大规模集成电路(Very Large Scale Integration,VLSI)。这使得微处理器、存储器、图形处理器等器件的性能得以大幅提升,同时成本也得到了进一步的降低。这一阶段的关键技术包括光刻制程的改进、多层金属化、深亚微米制程技术等,这些技术使得集成电路的制造工艺更加复杂和精密,但也带来了巨大的性能提升和功能丰富度。
软件的发展

​ 计算机软件的发展历程可以简单地分为以下几个阶段:

  1. 早期阶段(1940年代 - 1950年代):计算机软件的早期阶段是计算机发展的起步阶段。在这个阶段,软件通常是直接编写在机器语言或者汇编语言中,编写和调试都非常繁琐。程序员必须手工编写二进制指令,这使得软件开发进程缓慢且容易出错。
  2. 汇编语言阶段(1950年代 - 1960年代):随着汇编语言的出现,软件开发变得更加高效。汇编语言是一种更接近机器语言的低级语言,它使用助记符和符号来表示机器指令,使得程序员能够更容易地理解和编写程序。汇编语言的出现提高了程序员的生产率,并且为后来高级语言的发展奠定了基础。
  3. 高级语言阶段(1960年代 - 至今):高级语言的出现标志着计算机软件发展的重要转折点。高级语言(如Fortran、COBOL、C等)使得程序员能够用更接近自然语言的方式编写程序,而不必关注底层的硬件细节。这大大提高了软件开发的效率和质量。随着时间的推移,高级语言不断发展和完善,出现了面向对象编程、函数式编程等新的编程范式,使得软件开发变得更加灵活和可维护。
  4. 软件工程阶段(1970年代 - 至今):随着软件规模的不断扩大和复杂度的增加,软件工程成为了一个独立的学科。软件工程通过系统化的方法论、工具和技术,致力于管理和优化软件开发过程,以确保软件的质量、可靠性和可维护性。在这一阶段,出现了许多软件开发方法论和模型,如结构化方法、面向对象方法、敏捷开发等,这些方法论为软件开发提供了指导和支持。
  5. 互联网和开源阶段(1990年代 - 至今):随着互联网的兴起和开源运动的发展,软件开发进入了一个全新的时代。互联网为软件开发提供了全球性的合作平台和分发渠道,使得开发者能够更加便捷地分享代码、合作开发。开源运动则推动了许多优秀的开源软件项目的诞生和发展,如Linux操作系统、Apache Web服务器、MySQL数据库等。这些开源软件在各个领域都发挥了重要作用,推动了软件开发的进步和创新。

​ 总的来说,计算机软件的发展历程经历了从低级到高级语言、从个体到团队协作、从封闭到开放的演变过程,不断推动着计算机技术的发展和应用。

计算机硬件的基本组成

冯诺依曼体系结构(存储程序型电脑)

​ 最早的计算机器仅内含固定用途的程序。例如一个计算器仅有固定的数学计算程序,它不能拿来当作文字处理软件,更不能拿来玩游戏。若想要改变此机器的程序,你必须更改线路、更改结构甚至重新设计此机器。当然最早的计算机并没有设计的那么可编程。当时所谓的“重写程序”很可能指的是纸笔设计程序步骤,接着制订工程细节,再施工将机器的电路配线或结构改变。

​ 而存储程序型电脑的概念改变了这一切。借由创造一组指令集结构,并将所谓的运算转化成一串程序指令的执行细节,让此机器更有弹性。借着将指令当成一种特别类型的静态资料,一台存储程序型电脑可轻易改变其程序,并在程控下改变其运算内容。

​ 当年,冯·诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机Mark I和ENIAC,在使用Mark I和ENIAC的过程中,他意识到了存储程序的重要性,从而第一次提出了存储程序逻辑架构。存储程序的具体方式就是将指令以二进制代码的形式事先输入计算机的主存储器,然后按照其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

​ 冯诺依曼计算机的结构大致如下图:
在这里插入图片描述

​ 冯诺依曼计算机的特点:

  1. 计算机由五大部件组成
  2. 指令和数据以同等地位以二进制的形式存于存储器,可以按照地址寻访
  3. 指令由操作码和地址码组成
  4. 存储程序
  5. 以运算器为中心
现代计算机的结构

​ 由于早期冯诺依曼机的缺陷(例如以运算器为核心会浪费许多运算器的性能),现代计算机的结构在其结构之上做了一些改良:
在这里插入图片描述

​ 结构中的部件是这样进行划分的:
在这里插入图片描述

​ 其中我们必须清楚的是现代计算机结构中运算器与控制器都会被集成于CPU芯片中,且现代计算机不再以运算器为核心,而是以存储器为核心。

各硬件的工作原理

主存储器的基本组成

​ 主存储器主要可以分为存储数据的存储体以及两种寄存器:用于存储地址的MAR(Memory Address Register)和用于存储数据的MDR(Memory Data Register)。CPU可以借由这两种寄存器对存储体进行读写,如:CPU想要读取某个地址的存储单元中的数据,先向MAR中存入地址,然后主存储器中的运行逻辑将会把对应地址的值填入MDR中,然后MDR可以将数据传输给CPU。

​ 主存储器和存储体的示意图和一些常见概念如下:

在这里插入图片描述

注:现在的计算机通常将MAR、MDR集成在CPU内。

运算器的基本组成

​ 运算器用于实现算术运算以及逻辑运算。其中包含了如下的几个部件:
在这里插入图片描述

  • ACC:累加器,用于存放操作数或运算结果。
  • MQ:乘商寄存器,在乘除运算时,用于存放操作数或运算结果。
  • X:通用的操作数据存器,用于存放操作数。
  • ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算。

​ 上面三种寄存器存储的数据的类型如下:
在这里插入图片描述

控制器的基本组成

​ 控制器用于协调指令执行的顺序和控制数据流,以及寄存器用于存储指令和数据。被分为以下几个部件:
在这里插入图片描述

  • CU:控制单元,分析指令,给出控制信号。
  • IR:指令寄存器,存放当前执行的指令。
  • PC:程序计数器,存放下一条指令的地址,有自动加一的功能。

​ 完成一条指令的过程大致如下:首先有PC找到指令完成取指令,然后放入IR中,最后由CU对指令进行分析和给出控制信号从而完成指令的执行。

计算机的工作过程

​ 首先高级语言被编译器编译成机器语言,然后这些机器指令被装入主存中:

在这里插入图片描述

​ 执行第一条指令(主存地址0)的图解:
在这里插入图片描述

​ 第二条指令:

在这里插入图片描述

​ 第三条指令:
在这里插入图片描述

​ 第四条指令:
在这里插入图片描述

​ 第五条指令:
在这里插入图片描述

​ 分析第一条指令以及后面的指令,我们可以发现每一条指令的执行从取指令到分析指令结束都是一样的,而后面执行指令的步骤则根据指令的不同而不同。除此之外,我们还可以知道CPU可以根据指令执行周期的不同阶段得到当前取出的是指令还是数据。

在这里插入图片描述

​ 经历了上述过程的分析,相信大家对于计算机体系结构的特点也有了更深的认知。

计算机系统的层次结构

​ 计算机系统可以根据下图进行层次结构的划分,划分为五层:
在这里插入图片描述

​ 由上述层次结构的划分,我们也可以了解到三种级别的语言和它们的特点,高级语言可以借由各种解释器的翻译转化为机器语言,从而让计算机能够运行对应的程序:
在这里插入图片描述

计算机的性能指标

存储器的性能指标

​ 存储器的性能指标主要就是看它的总容量,理论上来说,主存储器的总容量就是存储单元个数(地址总数)*存储字长 bit ,如下图:
在这里插入图片描述

CPU的性能指标

​ CPU的性能指标主要与下图中的这几个东西有关,其中CPU的主频表示CPU内数字脉冲信号震荡的频率:

在这里插入图片描述

​ 总结一下常用的数量单位,在描述存储容量、文件大小时,KMGT分别是2的十次方的幂,而在描述评率和速率时,它们又代表10的几次幂了。

在这里插入图片描述

系统整体的性能指标

​ 系统整体的性能指标大致如下:

在这里插入图片描述

​ 如果我们想要实时测算计算机处理速度,可以使用鲁大师等基准程序,被测量的计算机性能可以与运行相同程序的其他计算机进行性能比较。

结语

​ 这些就是我在计算机系统概述部分的学习历程和心得,希望能对大家有所帮助。此外,这些内容参考了b站王道考研的免费计组课程,如果大家感兴趣可以去支持一下。

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

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

相关文章

AWS Key disabler:AWS IAM用户访问密钥安全保护工具

关于AWS Key disabler AWS Key disabler是一款功能强大的AWS IAM用户访问密钥安全保护工具,该工具可以通过设置一个时间定量来禁用AWS IAM用户访问密钥,以此来降低旧访问密钥所带来的安全风险。 工具运行流程 AWS Key disabler本质上是一个Lambda函数&…

Go 语言中的 GIF 图像处理完全指南:`image/gif`的技术与实践

Go 语言中的 GIF 图像处理完全指南:image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例:设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

书生·浦语大模型实战训练营第二期第四节--Xtuner微调LLM--notebook

XTuner微调LLM课程笔记 一、Finetune简介 1.为什么模型要做微调? 现在其实大部分的大模型应该叫做“基座模型”,也就是基于普遍性的任务去进行与训练的,所以如果想让它落地在特定的下游领域中,它的表现必然是不如在领域内训练的模…

【devops】 阿里云挂载云盘 | 扩展系统硬盘 | 不重启服务器增加硬盘容量

扩容分区和文件系统(Linux) 文档地址 https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance?spm5176.smartservice_service_robot_chat_new.help.dexternal.4ac4f625Ol66kL#50541782adxmp…

Go 之 sync.Mutex 加锁失效现象

我先声明一下,并不是真的加锁失效,而是我之前的理解有误,导致看起来像是加锁失效一样。于是乎记录一下,加深一下印象。 我之前有个理解误区(不知道大家有没有,有的话赶紧纠正一下——其实也是因为我这块的…

【在线OJ系统】自定义注解实现分布式ID无感自增

实现思路 首先自定义参数注解,然后根据AOP思想,找到该注解作用的切点,也就是mapper层对于mapper层的接口在执行前都会执行该aop操作:获取到对于的方法对象,根据方法对象获取参数列表,根据参数列表判断某个…

html接入高德地图

1.申请key key申请地址&#xff1a;https://console.amap.com/dev/key/app 官方文档 https://lbs.amap.com/api/javascript-api-v2/summary 2.html接入示例 需要将YOUR_KEY替换成自己的key <!doctype html> <html> <head><meta charset"utf-…

IDEA 安装、基本使用、创建项目

文章目录 下载基本使用修改颜色主题Keymap插件 创建项目创建模块新建 Java 类运行新建 Package打包 Jar运行 jar 包 查看文档 下载 官方下载地址&#xff1a;https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 这里我下载 macOS 社区版&#xff0c;IDEA 2024.1 (C…

arcgis中坡向计算工作原理说明

用于识别出从每个像元到其相邻像元方向上值的变化率最大的下坡方向。坡向可以被视为坡度方向。输出栅格中各像元的值可指示出各像元位置处表面的朝向的罗盘方向。将按照顺时针方向进行测量&#xff0c;角度范围介于 0&#xff08;正北&#xff09;到 360&#xff08;仍是正北&a…

Windows 安装 A UDP/TCP Assistant 网络调试助手

Windows 安装 A UDP/TCP Assistant 网络调试助手 0. 引言1. 下载地址2. 安装和使用 0. 引言 需要调试一个实时在线聊天程序&#xff0c;安装一个UDP/TCP Assistant 网络调试助手&#xff0c;方便调试。 1. 下载地址 https://github.com/busyluo/NetAssistant/releases 2. 安…

Jsp 中的getServletContext全局数据共享

servletContext作用于不同用户之上 1. 一个用户将数据保存到了servletContext中, // getcontext的servlet程序 Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context this.get…

考察自动化立体库应注意的几点

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 整版PPT和更多学习资料&#xff0c;请球友到知识星球 【智能仓储物流技术研习社】自行下载 考察自动化立体仓库的关键因素&#xff1a; 仓库容量&#x…

windows11 wsl2 ubuntu20.04安装vision mamba并进行测试

windows11 wsl2 ubuntu20.04安装vision mamba 安装流程使用cifar-100测试安装成功 安装流程 vision mamba安装了半天才跑通&#xff0c;记录一下流程在wsl上安装cuda wget https://developer.download.nvidia.cn/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05…

[论文笔记]Root Mean Square Layer Normalization

引言 今天带来论文Root Mean Square Layer Normalization的笔记&#xff0c;论文题目是均方根层归一化。 本篇工作提出了RMSNorm&#xff0c;认为可以省略重新居中步骤。 简介 层归一化对Transformer等模型非常重要&#xff0c;它可以帮助稳定训练并提升模型收敛性&#xf…

NVM下载、NVM配置、NVM常用命令

NVM(nodejs版本管理切换工具)下载、配置、常用命令 0、NVM常用命令 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例…

发布!DolphinDB 白皮书正式上线官网!

对广大数据库用户而言&#xff0c;白皮书是极具参考价值的使用指南和学习手册。白皮书不但能深入剖析数据库的基础概念与架构&#xff0c;协助用户了解数据库的工作原理和应用技巧&#xff0c;更提供了丰富的实践案例&#xff0c;帮助用户从中汲取经验&#xff0c;避免在实际应…

【JAVA基础篇教学】第十一篇:Java中字符串操作详解

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十篇&#xff1a;Java中字符串操作详解。 在 Java 编程中&#xff0c;字符串是一种常见的数据类型&#xff0c;通常用于存储文本信息。Java 提供了丰富的字符串操作方法&#xff0c;可以对字符串进行分割、截取、查找…

【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)

往期回顾 【QT入门】Qt自定义控件与样式设计之自定义QLineEdit实现搜索编辑框-CSDN博客 【QT入门】Qt自定义控件与样式设计之自定义QTabWidget实现tab在左&#xff0c;文本水平的效果-CSDN博客【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编…

文件msvcr120.dll丢失怎样修复?这三种方法能准确修复msvcr120.dll

小编为大家总结了解决msvcr120.dll文件缺失问题的三种方法&#xff0c;以帮助你快速解决这一难题。首先&#xff0c;我们来看看msvcr120.dll文件为何会出现丢失的情形。 一.msvcr120.dll丢失问题的常见原因包括 病毒感染&#xff1a;病毒或恶意软件侵入电脑有可能会损毁或删除…

【第1节】书生·浦语大模型全链路开源开放体系

目录 1 简介2 内容&#xff08;1&#xff09;书生浦语大模型发展历程&#xff08;2&#xff09;体系&#xff08;3&#xff09;亮点&#xff08;4&#xff09;全链路体系构建a.数据b 预训练c 微调d 评测e.模型部署f.agent 智能体 3 相关论文解读4 ref 1 简介 书生浦语 InternLM…