计算机组成原理——基础入门总结(一)

本帖更新一些关于计算机组成原理的重点内容。由于博主考研时并不会考这门课,但是考虑到操作系统中又很多重要晦涩的概念涉及很多诸如内存、存储器、磁盘、cpu乃至各种寄存器的知识,此处挑选一些核心的内容总结复盘一遍——实现声明:本帖的内容注重知识扩展,而非纯应试~

配套课程:王道考研


一.计算机的发展

计算机系统=硬件+软件(硬件决定了性能天花板,而软件又决定了能将性能发挥到什么程度~)

计算机在处理数字计算时,本质上是在处理一系列电信号,逻辑原件是处理电信号的最小单元

发展历史:

  • 1946年:埃尼亚克(ENIAC)——因为军事应运而生(电子管时代1946-1957)
  • 晶体管时代(1958-1964):体积、功耗降低;出现面向过程的程序设计语言;操作系统的雏形出现
  • 中小规模集成电路时代(1965-1971):规模进一步缩小,可靠性进一步提高,各种高级语言发展迅速,开始出现分时操作系统
  • 超大规模集成电路时代(1971-至今):出现微处理机(CPU)以及个人计算机(PC),同时出现Windows等各种耳熟能详的操作系统

自从奔腾系列开始,CPU基本上进入64位的字长~

 

 

 java与Python等语言是更适合于网络环境的编程语言。

二.计算机硬件的基本组成

 为了解决ENIAC需要手动接线的弊端,冯诺依曼第一次提出了存储程序的概念!

 本质在于——解决了手动操作的缺点。

 如上是冯诺依曼体系结构。

(所谓软件与硬件在逻辑上等价,要联想OS中临界区用软件和硬件实现互斥的两种对立情况!)

特点:

1.计算器由五大部件组成

2.指令和数据以同等地位存放于存储器, 可按地址寻访

3.指令和数据用二进制码表示

4.指令由操作码和地址码组成

5.出现存储程序

6.以运算器为核心!

进化:现代计算机以存储器为核心!

而当大规模集成电路出现后, 运算器和控制器往往集成在一个芯片上

而这个芯片就是常说的——CPU

注意:主存即所谓的内存~ 

而辅存(存储、磁盘),本质上应该归结为IO设备~

三.硬件工作原理

1.主存储器

存储字长通常情况下为8个bit的整数倍~

存储元的实现细节本质上是依靠电容实现的。

  • MAR位数决定存储体的个数
  • MDR的位数决定存储单元的存储字长

易混淆:

  • 字节:Byte,即1Byte=8bit(1字节对应8比特)
  • 字:每个存储单元可以存放比特的位数——即存储字长,大小由寄存器本身决定

注意:ISP(运营商)所提供的100兆宽带,单位是100Mbps,其中的b象征的是bit而并非字节,换算下来将近12.5MB每秒,结合计网的知识,带宽只是理想状态下的网速,因此假使办理的宽带为所谓的1000兆,实际上的最高网速也只有125MB/s,而在实际使用时,可能达到20MB已经是最大值了~

 2.运算器

核心在于ALU——算术逻辑单元,造价很高。

 3.控制器

核心在于CU。

 

 高级语言代码的执行原理均为一连串的二进制码组成(机器指令)。

如上图,解下来通俗地描述一下CPU实现a=2赋值这一过程的背后原理:

  1. 首先,程序计数器PC指向下标为0的第一条指令,因此根据序号下标来寻找这条指令的内容,即把存储地址发送给MAR。
  2. 然后MAR根据给出的地址,去存储体中找到完整的指令内容
  3. 存储体将指令送给MDR
  4. MDR再将指令传送给指令寄存器IR
  5. IR将指令的操作码部分传递给CU,即指明了该条指令需要实现什么样的功能
  6. IR再将指令的地址码传给MAR,即寻找该条指令所需要的数据所对应的地址!
  7. 以此类推第2步
  8. 以此类推第3步
  9. MDR将数据传送给ACC,即累加器

指令完成后,PC实现自加1。

而当运行到停机指令时,这时操作系统需要通过中断处理或者系统调用来终结当前进程的执行~

 四.系统层次结构

下层是上层的基础,上层是下层的扩展~

  • 编译型语言:将编写的源程序全部语句一次性全部翻译为机器语言程序,而后再执行机器语言程序(只需要翻译一次)——(exe文件的产生可以为一种理解)
  • 解释型语言: 将源程序的语句逐行翻译,翻译结束后就立即执行,紧接着再翻译下一句

五.性能指标

 1.总容量

 

2.CPU性能主频 

主频越高的CPU速度越快

CPI:执行一条指令需要的时钟周期

(具体时间与其他因素有关)

平均执行一条指令的耗时:CPI*CPU时钟周期

(频率类的信息,G代表10的9次方)

 3.其他:

 4.基准程序(某种跑分软件......)

通过设计好的程序代码,测试当前CPU执行目标代码所需要的时间。

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

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

相关文章

【微信小程序】外卖点餐效果展示

概述 外卖点餐效果展示,左右布局,快速点餐,商家信息展示等...程序是模仿人家的,所以界面没做什么调整,功能是没啥问题,可以正常使用... 详细 直接看效果图: 可以把这个点餐这个功能分为5部分…

第13篇:ESP32 idf wifi联网使用SNTP同步网络时间LCD ST7920液晶屏显示

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:2

Vulnhub靶机Grotesque:1.0.1渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:暴力破解:③:SSH登入:④:提权&#…

day21算法

常见的七种查找算法: ​ 数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构…

MapReduce YARN 的部署

1、部署说明 Hadoop HDFS分布式文件系统,我们会启动: NameNode进程作为管理节点DataNode进程作为工作节点SecondaryNamenode作为辅助 同理,Hadoop YARN分布式资源调度,会启动:ResourceManager进程作为管理节点NodeM…

uni-app 实现自定义按 A~Z 排序的通讯录(字母索引导航)

创建 convertPinyin.js 文件 convertPinyin.js 将下面的内容复制粘贴到其中 const pinyin (function() {let Pinyin function(ops) {this.initialize(ops);},options {checkPolyphone: false,charcase: "default"};Pinyin.fn Pinyin.prototype {init: functi…

JavaScript:二进制数组【笔记】

二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。 这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】,为了满足JavaScript与显卡之间大量、实时数据交换,那么JavaScript和显卡之间的…

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了

一款非常容易上手的报表工具,简单操作实现BI炫酷界面数据展示,驱动支持众多不同类型的数据库,可视化神器,免开源了。 在互联网数据大爆炸的这几年,各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的…

flink 端到端一致性

背景 我们经常会混淆flink提供的状态一致性保证和数据端到端一致性保证的关系,总以为他们表达的是同一个意思,事实上,他们不是一个含义,flink只能保证其维护的内部状态的一致性,而数据端到端的一致性需要数据源&#…

数据包络分析(DEA)

写在前面: 博主本人大学期间参加数学建模竞赛十多余次,获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路,故将数学建模常用数学模型算法汇聚于此专栏,希望能够对要参加数学建模比赛的同学们有所帮助。 目录 1. …

TypeScript 从入门到进阶之基础篇(一) ts类型篇

系列文章目录 文章目录 系列文章目录前言一、安装必要软件二、TypeScript 基础类型1.基础类型之 数字类型 number2.基础类型之 字符串类型 string3.基础类型之 布尔类型 boolean4.基础类型之 空值类型 void5.基础类型之 null 、undefined类型6.基础类型之 任意类型 any &#x…

第 363 场 LeetCode 周赛题解

A 计算 K 置位下标对应元素的和 模拟 class Solution { public:int pop_cnt(int x) {//求x的二进制表示中的1的位数int res 0;for (; x; x >> 1)if (x & 1)res;return res;}int sumIndicesWithKSetBits(vector<int> &nums, int k) {int res 0;for (int i…

CorelDRAW 2023怎么把图片转化为手绘素描风 简单几步轻松搞定

CorelDRAW 2023是一款非常好用的设计类软件&#xff0c;软件拥有非常多强大又好用的功能&#xff0c;可以帮助设计师快速创造出想要的效果&#xff0c;今天我们就来给大家介绍一下CDR的“素描”艺术笔触。它可以帮助用户快速将普通的图片快速转换成类似素描的风格&#xff0c;在…

接口测试——接口协议抓包分析与mock_L1

目录&#xff1a; 接口测试价值与体系常见的接口协议接口测试用例设计postman基础使用postman实战练习 1.接口测试价值与体系 接口测试概念 接口&#xff1a;不同的系统之间相互连接的部分&#xff0c;是一个传递数据的通道接口测试&#xff1a;检查数据的交换、传递和控制…

VUE build:gulp打包:测试、正式环境

目录 项目结构 Gulp VUE使用Gulp Vue安装Gulp Vue定义Gulp.js package.json build文件夹 config文件夹 static-config文件夹 项目结构 Gulp Gulp是一个自动化构建工具&#xff0c;可以帮助前端开发者通过自动化任务来管理工作流程。Gulp使用Node.js的代码编写&#xff…

使用Git把项目上传到Gitee的详细步骤

1.到Git官网下载并安装 2.到Gitee官网进行注册&#xff0c;然后在Gitee中新建一个远程仓库 3.设置远程仓库的参数 4.返回Gitee查看仓库是否生成成功 5.新建一个文件夹作为你的本地仓库 6.将新建好的文件夹初始化成本地仓库 第一步&#xff1a;右键点击刚创建的本地仓库&#…

Tomcat 的部署和优化

目录 1、什么是Tomcat 1.1、静态页面的选择 2、Tomcat是怎么运行的 3、安装jdk &#xff06; 部署jdk环境 & Tomcat 安装 1、安装jdk 2、配置jdk环境变量 3、tomcat安装 4、Tomcat启动 5.优化tomcat启动速度 6.Tomcat的主要命令 7.Tomcat 配置虚拟主机 8.Tomca…

第2章_freeRTOS入门与工程实践之单片机程序设计模式

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果 Gate.io Startup 首发项目Antmons代币AMS于Aug15th,AM 07:00开始下单&#xff0c;24小时内下单同等对待总共有15,950人下单&#xff0c;下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功&#xff0c;…

刷一下算法

记录下自己的思路与能理解的解法,可能并不是最优解法,不定期持续更新~ 1.盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容…