计算机原理 (2) CPU的诞生 输入 输出 PC指针

文章目录

  • 计算机的前世今生
  • 计算机的三个根本性基础
    • 1. 计算机是执行输入、运算、输出的机器;
    • 2.程序是指令和数据的集合;
    • 3.计算机的处理方式有时与人们的思维习惯不同
  • 二、结论
  • 三、参考资料
  • 交个朋友


计算机的前世今生

上一篇文章最终结束的时候谈到希望给大家带来有体系结构的计算机原理的知识,最近翻阅了一些书籍总感觉大家介绍CPU大体上都是按照CPU的组成部分挨个突破,但是又总感觉少了连接的部分,比如DMA这个技术叫直接存储器访问,我们会意识到就是IO与内存之间直接进行数据交换呗,如果直接学习这个概念博主当时没有特别深刻的理解,如果在学DMA之前我们学习CPU是怎么制作的,比如CPU通过读取汇编指令去实现内存与外设之间的数据交换,在这个基础上我们会不会更好的理解DMA呢?
第一篇文章就介绍CPU的诞生,理解一下CPU怎么来的?
在这里插入图片描述

计算机的三个根本性基础

理解一个事物的最好方法就是了解它的原则,什么东西只要找到根子了,就好说了,原则就是根子,理解原则在此基础上我们一点一点的构建一台计算机,这样也可以感觉到计算机的神奇!
计算机的三大原则:

1. 计算机是执行输入、运算、输出的机器;

计算机可以做各种各样的事情,比如:打游戏啦,处理文字啦,绘图啦,浏览网页啦,无论多么复杂的功能,都是以输入、运算、输出这个流程为单位的组合,输入必须有,没有输入计算机又不会自主思考,无法给出输出,运算必须有,没有运算这就是一根导线啊!相当于verilog中的wire a; wire b; assign b = a;这就是直接连线没有任何逻辑的参与,输出也是必要的啊!没有输出咱们用这个计算机也没有任何的意义啦!所有信息就都堆在计算机中了,我们又不能拿来用!从这个角度看自动炒菜机、自动糖葫芦机也符合计算机原则的第一点啊,更宏观的我们与学校结合在一起也可以看成计算机啊,我们是输入,学校有自己的培养流程,最终我们从学校毕业成为了不同的输出!

我们就是最智能的计算机,我们每天通过感官接触海量的信息,经过大脑的思考以后,输出成不同的内容,或者说出来,或者表现在行动上,或者以文章形式记录下来!只有这样我们才可以将自己处理的信息传递给外界!

2.程序是指令和数据的集合;

指令和数据这里涉及到以下几个问题!
1、指令和数据都是二进制数,指令与数据是针对于哪个视角区分的?
指令和数据这两个概念是针对CPU视角阐述的,内存并不区分指令与数据,指令与数据在内存眼里都是二进制数值,正常内存的结构如下:
在这里插入图片描述

正常存储器包括三部分:地址总线、数据总线、读写使能,内存就是给地址,例如给一个读使能,内存就吐出数据,给一个写使能,内存就在相应位置写入数据,内存不在意这个数据是什么,就是一个存数读数,有一个前提条件,这个数据必须是二进制的数据,内存就是一个没有感情的杀手;就好像在我们东北万物皆可冰糖,比如冰糖葫芦,冰糖辣条,冰糖辣椒,不管冰糖啥,反正熬糖浆,包糖,最后冷冻都是这个流程,这就像是内存,就是走这个流程,并不关心走流程的对象是谁!
在这里插入图片描述

指令和数据是针对CPU视角说的,CPU可以从时间和空间上区分指令与数据,CPU之所以区分指令和数据,是因为CPU不能对指令和数据一视同仁,需要对指令与数据进行不同的操作!还是糖葫芦那个例子,冰糖不在乎它包裹了谁,但是咱们在乎啊,吃山楂腹泻的吃冰糖葫芦,那肯定是不行的,可以吃冰糖橘子,冰糖葡萄,就是因为冰糖的对象不同会引发身体不同的感受和反应!下一个问题就是CPU既然区分指令和数据,那它是怎么区分的,区分的依据是什么呢?

2、指令和数据都是二进制数,如何区分指令与数据?
CPU可以从时间和空间上区分数据与指令:
时间上:
在时间上,在取指周期取出的是指令,正常三级流水线的CPU包括三个阶段:取指、译码、执行,在取指周期,CPU会将PC指针的数值作为地址去内存中取出所谓的“指令”,指令经过译码处理以后到达执行阶段,执行周期从内存取出或者往内存中写入的是数据,例如:RISC-V中的数据传输指令lb rd,offset(rs1),从地址为寄存器rs1的值加offset的主存中读一个字节,这个在取指的时候从内存中取出的就是这个数据传输指令,指令经过译码处理以后,进行执行阶段,执行寄存器rs1数值与offset的相加操作得到内存地址,内存地址线得到这个地址,吐出所谓的“数据”。
空间上:
在空间上CPU是如何区分指令和数据的呢?
通过地址来源区分,由PC提供存储单元地址的取出的是指令,指令地址码部分提供存储单元地址的取出的是操作数;
以RISC-V的LW指令为例:
在这里插入图片描述LW(load word)指令格LW rd,offset(rs1) ;
x[rd] = sext ( M [x[rs1] + sext(offset) ] [31:0] )
举个在这里插入图片描述
LW x13,4(x12)
在x12寄存器中的数加上4的偏移量对应的内存地址中,读出四个字节,存到x13寄存器中,其中4(x12)就是LW指令的指令地址码部分,从地址码部分提供的存储单元中取出的就是数据;
在这里插入图片描述
以8086CPU为例,如上图所示,8086中有4个段寄存器:CS、DS、ES、SS,8
086CPU中指令地址是由CS和IP共同提供的
,CS提供段地址,IP提供偏移地址,用它们合成指令的物理地址,去内存中取指令;摘抄王爽老师的汇编语言中的一段话:
如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过!!!
8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址;

3.计算机的处理方式有时与人们的思维习惯不同

对计算机什么说什么都是数字!例如我们理解的红色就是一个色彩,但是计算机可能就用"255,0"表示红色;
不论是颜色,还是文字,计算机都是用数字进行表示;

在这里插入图片描述
例如:这张图片我们看到的是天空中有一轮明月,计算机看到的就是一串串数字;
举个例子:Perl脚本中$美元符号就是一个标识符,这个符号的意思就是后面所跟的是一个变量,好比C语言中的int,这就是因为Perl解释器看到美元符号就会把它后面跟的字符当成变量处理,看见C语言中的int则当成普通字符处理,这就是因为Perl解释器和C语言编译器对一个事物的理解不同,当然这种理解是我们人类赋予的!

二、结论

之前说了介绍有体系的计算机原理的文章,这一节介绍了计算机的三大根本性基础,包括以下3点:第1点是计算机是输入、运算、输出的机器,这就好像房子包括房梁、墙、门窗等构成,第2点是程序是由指令和数据组成的,程序是计算机运行的内容,好比房子的用途,比如幼儿园是小孩上学的,菜市场是买菜的地方,第3点是计算机的处理方式与人的思维习惯不同,就好像房子在地产商看来就是钢筋水泥,在我们看来那就是家!

三、参考资料

1.计算机如何区分指令和数据
2.王爽老师:汇编语言
3.计算机是怎样跑起来的

交个朋友

在这里插入图片描述

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

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

相关文章

Filter Options in Select Field

Filter Options in Select Field 假设有两个下拉字段State和City。邦有两个值卡纳塔克邦和马哈拉施特拉邦,城市有四个值,班加罗尔,迈索尔,孟买和浦那。如果希望根据State中选择的值过滤City中的选项,可以编写如下所示的…

SpringBoot pom.xml文件标签含义

Pom文件 基本构成 通过最简单的一个SpringBoot项目的 Pom文件来了解一下Pom文件的基本构成 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索

一、GitCode AI开源搜索是什么&#xff1f; GitCode AI开源搜索 是面开发者的 AI 开源搜索工具&#xff0c;目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案&#xff0c;帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库。 二、GitCode…

秋招复习之堆

目录 前言 堆 堆的常用操作 堆的实现&#xff08;大根堆&#xff09; 1. 堆的存储与表示 2. 访问堆顶元素 3. 元素入堆 4. 堆顶元素出堆 Top-k 问题 方法一&#xff1a;遍历选择 方法二&#xff1a;排序 方法三&#xff1a;堆 总结 前言 秋招复习之堆。 堆 「堆 heap…

Apache Camel笔记

Apache Camel笔记 1. Apache Camel概念 Apache Camel是一个轻量级的应用集成开发框架&#xff0c;专注于简化集成应用的开发。它基于Enterprise Integration Patterns&#xff08;企业集成模式&#xff0c;简称EIP&#xff09;的设计理念&#xff0c;提供了灵活的路由和中介机制…

[java]JAVA中文版API手册 -jdk_api_1.8

有mac和win版本 链接&#xff1a;https://pan.baidu.com/s/14WGXJYBICeSxgg6OxBVGRQ 提取码&#xff1a;c03p

Video classification with UniFormer基于统一分类器的视频分类

本文主要介绍了UniFormer: Unified Transformer for Efficient Spatial-Temporal Representation Learning 代码&#xff1a;https://github.com/Sense-X/UniFormer/tree/main/video_classification UNIFormer 动机 由于视频具有大量的局部冗余和复杂的全局依赖关系&#xf…

C语言基本语句介绍

c程序的执行部分是由语句组成的。程序的功能也是由执行语句来实现的&#xff0c;c语句分为6类 1表达式语句 表达式语句由表达式加上分号“&#xff1b;”组成 一般形式&#xff1a;表达式&#xff1b; 2函数调用语句 由函数名&#xff0c;实际参数加上分号“&#xff1b;”…

【MySQL】事务管理

文章目录 什么是事务为什么会出现事务事务的版本支持事务的提交方式事务的相关演示事务的隔离级别查看与设置隔离级别读未提交&#xff08;Read Uncommitted&#xff09;读提交&#xff08;Read Committed&#xff09;可重复读&#xff08;Repeatable Read&#xff09;串行化&a…

神经网络中参数与超参数的区别是什么?

在神经网络中&#xff0c;参数和超参数是两个非常重要但概念上不同的元素。它们的主要区别在于它们在模型训练和构建中的角色和如何被确定。 参数&#xff08;Parameters&#xff09; 定义&#xff1a;参数是神经网络在训练过程中学习的变量。这些包括权重&#xff08;weights…

Rust-vec!与Vec::with_capacity初始化数组的区别

前言 这篇文章的实际上是对我在知乎上&#xff0c;下面这个问题的答案补充。 Rust能不能动态生成固定大小的数组&#xff08;array&#xff09;&#xff1f; 对于问题中的代码 fn main(){let n 3;let mut arr:[i32; n] [0;n] ; println!(":?", arr); }进行如下…

System学习笔记 - MacOs编译环境配置(一)

前言 好几年没有记录过东西&#xff0c;一是确实很忙&#xff0c;二是人也变懒了。新年开个新的学习计划&#xff0c;希望能坚持下去。 SystemC 简介 SystemC是一个建模语言&#xff0c;其本质是一个C的库&#xff0c;一般用于SoC建模&#xff0c;具体介绍不赘述&#xff0…

【学习记录】找最低位1/模块多次例化

一、找最低位1 要求&#xff1a;找出Nbit数据a中最低位1所在的位置&#xff0c;用onehot形式data_onehot表示 假设a1010_0100 将a减1&#xff0c;则可得最低位1后面所有数据为0的b,b1010_0011将b取反&#xff0c;得c,c0101_1100将a与c进行与操作&#xff0c;则可得 a&c 0…

CEEMDAN +组合预测模型(Transformer - BiLSTM+ ARIMA)

目录 往期精彩内容&#xff1a; 前言 1 风速数据CEEMDAN分解与可视化 1.1 导入数据 1.2 CEEMDAN分解 2 数据集制作与预处理 3 基于CEEMADN的 Transformer - BiLSTM 模型预测 3.1 定义CEEMDAN-Transformer - BiLSTM预测模型 3.2 设置参数&#xff0c;训练模型 4 基于A…

【Python学习】Python学习6-循环语句

目录 【Python学习】【Python学习】Python学习6-循环语句 前言for循环for循环示例通过序列索引迭代循环使用 else 语句 while循环while循环示例continue和 break无限循环循环使用 else 语句简单语句组 嵌套循环Python for 循环嵌套语法&#xff1a;Python while 循环嵌套语法&…

网络安全—IPSec安全策略

文章目录 网络拓扑添加策略ESP添加筛选器添加筛选器的操作另一台主机设置 AH 使用Windows Server 2003系统 网络拓扑 client1 IP 192.168.17.105client2 IP 192.168.17.106 只要保证两个主机在同一网段接口&#xff0c;即互相ping通即可完成策略的实现 下面的所有通讯都只是…

阿里云服务器ECS入门与基础运维

一、云服务器简介 1、服务器&#xff1a; (1) 概念&#xff1a; 服务器本身就是一种电脑&#xff0c;同样具备CPU、内存、硬盘、网卡、电源等硬件。 互联网对外提供网站、游戏、在线会议、网盘等服务&#xff0c;都需要将这些互联网服务部署到服务器中。 (2) 特点&#xf…

C语言编译器(C语言编程软件)完全攻略(第二十六部分:C-Free使用教程(使用C-Free编写C语言程序))

介绍常用C语言编译器的安装、配置和使用。 二十六、C-Free使用教程&#xff08;使用C-Free编写C语言程序&#xff09; 1、安装C-Free 5.0 C-Free 是一款国产的Windows下的C/C IDE&#xff0c;最新版本是 5.0&#xff0c;整个软件才 14M&#xff0c;非常轻巧&#xff0c;安装…

shell编程学习(二)

变量的类型 预定义变量 $$ 当前进程PID $? 命令执行后的返回状态.0 为执行正确&#xff0c;非 0 为执行错误 $# 位置参数的数量 $* 所有位置参数的内容 …

前端性能优化之图像优化

图像优化问题主要可以分为两方面&#xff1a;图像的选取和使用&#xff0c;图像的加载和显示。 图像基础 HTTP Archive上的数据显示&#xff0c;网站传输的数据中&#xff0c;60%的资源都是由各种图像文件组成的&#xff0c;当然这些是将各类型网站平均的结果&#xff0c;单独…