生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

寄存器基本原理介绍(上篇)

  • 2019-10-26
  • 本文字数:2279 字

    阅读完需:约 7 分钟

寄存器基本原理介绍(上篇)

寄存器的类型众多,简要阐述几个最重要的,在此之前先来看看存储单元和总线


存储单元一般应具有存储数据和读写数据的功能,以 8 位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。存储地址一般用十六进制数表示,而每一个存储器地址中又存放着一组二进制(或十六进制)表示的数,通常称为该地址的内容。


存储器被划分为若干个存储单元,编号顺序是从 0 开始,,比如一个和存储器有 100 个存储单元,那么他的编号就是 0-99。


微型储存器的容量是以字节为最小单位来计算的,对于拥有 100 的存储单元的存储器,他的容量是 100 个字节。


以上说到,存储器被划分为多个存储单元,从零开始编号,就像是一条街上的门牌号一样,那么 CPU 要读取这些数据,就像是在这一条街里找这个门牌号一样,先要确定在哪里住。


由此可见,CPU 要相对数据进行读写,必须和芯片进行下面 3 类交互:


  • 存储单元的地址(地址信息)

  • 器件的选择,读或者写命令(控制信息)

  • 读或写的数据(数据信息)


那么,CPU 是如何让将这些新词传输到存储器的芯片中的,这就涉及到一个概念,我们都知道,计算机能够处理的信息都是电信号,也就是高低电平,电信号当然是由导线来传送。在计算机中,由专门连接 CPU 和其他芯片的导线,我们通常称为总线,总线从物理的概念来讲,就是一根根导线的集合。根据传出信息的不同,总线从逻辑上讲主要分为 3 类:地址总线,控制总线以及数据总线。



分析上图,三个基础导线首先 CPU 通过地址线将信息发出,然后通过控制线发出内存读写任务,选中存储器芯片,并命令从中读取数据,最后通过数据线将数据送入 CPU。


接下来,详细介绍一下。

地址总线

现在,我们知道 CPU 是通过地址总线来指定存储单元的,那么可见地址总线上能传递多少不同的信息,就能对多少个存贮单元进行寻址。


现在假设,一个 CPU 有 10 根地址线,一根导线能传递的状态只有两种,一种是高电平,一种是低电平,就是二进制的 0 和 1,那么 10 根导线就是 10 位 2 进制数据,那么 10 位进制能组成多少不同的数据呢?2 的 10 次方个,最小为 0,最大是 1023。如果一个 CPU 由 N 根地址总线,那么可以说这个 CPU 的地址总线的宽度为 N,这样的 CPU 最多可以寻找 2 的 N 次方个内存单元。


地址总线由微处理器产生,主要用来存储输入输出接口,传送地址信息,是一条单向总线。



上图就是对地址总线一个简单的概述,帮助大家理解。上图共有 5 条地址线,一次传输五位二进制数。

数据总线

数据总线主要负责 CPU 与其他部件的数据传送,数据总线的宽度决定了 CPU 和外界的数据传输速度,8 根数据线一次性可传送一个 8 位二进制数,也就是一根一个数据,共一个字节,16 根就是传输两个字节。


数据总线是一条双向总线,CPU 和其他部件的双向传输信号。


8088CPU 的数据总线宽度为 8,8086CPU 的数据总线宽度为 16,8086 的数据传送要快一些。

控制总线

控制总线控制外部器件,控制总线只是一个总称,其实是由一些不同的控制线集合,有多少根控制总线就意味着对外部器件有多少种控制,控制总线决定着 CPU 对外部器件的控制能力。


控制总线主要传输控制信号、时序信号和状态信号,也是一条双向总线。


以上简单说了总线相关的问题,对于理解寄存器有很大帮助,接下来聊聊寄存器。寄存器是中央处理器内的组成部分,寄存器是有限存储容量的高速存储部件,可用来暂存指令、数据和地址。


寄存器是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求,而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU 中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。


在计算机领域,寄存器是 CPU 内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间数据传送非常快。不同的 CPU 寄存器是不相同的,在此以 8086CPU 为例,8086CPU 一共有 14 个寄存器。这里不依次介绍,先介绍最主要的。

通用寄存器

8086CPU 所有的寄存器都是 16 位的,可以存放两个字节。AX、BX、CX 和 DX 这四个寄存器主要用来存放一般性数据,也称为通用寄存器。以 AX 为例,来看下其内部结构。



上图只是一个简易的逻辑图,每一个小格就是一个存储单元,一共 16 个 ,编号 0-15,左边是高位,右边低位,这四个寄存器每一个 8 位都可以当作独立的寄存器来使用:


  • AX 可以分为 AH 和 AL

  • BX 可以分为 BH 和 BL

  • CX 可以分为 CH 和 CL

  • DX 可以分为 DH 和 DL


AX 的低八位,也就是 0 到 7 位,构成了 AL 寄存器,高八位,8 到 15 位,构成了 AH 寄存器,AH 和 AL 是可以独立使用的 8 位寄存器。例如,数据 1001 1100 0100 000(4E20H)是在寄存器中的数据。



寄存器 AH(4EH)



寄存器 AH(20H)


由此可见,在寄存器中高位存高位,当然以后会涉及到大端小端的问题,目前只需要理解高位存高位,低位存低位就可以了。


最后简单介绍计算机中较为常用的单位。我们大家应该都了解基本的换算单位,1KB=1024B,1MB=1024KB,1GB=1024MB,1TB=1024GB。在这个里面有一个新的单位—字(word),一个字由两个字节构成,这两个字节称为这个字的高位字节和低位字节,这就能够很好的理解通用寄存器的问题,一个通用寄存器是 16 位,两个字节也就是一个字,AH 就是对应的高位字节,AL 也就是低位字节,这两个字节可以划分为两个独立的数据。


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-10-26 08:007046

评论

发布
暂无评论
发现更多内容

【LeetCode】分割数组Java题解

Albert

算法 LeetCode 11月月更

Vue基础学习(五)

Studying_swz

Vue 11月月更

湖仓一体电商项目(六):大屏可视化工具腾讯云图

Lansonli

湖仓一体电商项目 11月月更

定了,2022双11 技术进化开启新未来

阿里技术

双11

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

西柚子

Python进阶(二十六)多线程实现同步的四种方式

No Silver Bullet

Python 多线程 11月月更

Python进阶(二十九)Python时间&日期&时间戳处理

No Silver Bullet

Python 日期处理 11月月更

JVM 引用数据类型分析

Andy

Java实现List中集合的元素进行排序

共饮一杯无

Java List 11月月更

麒麟信安携手 openEuler 支撑国家电网首批数字换流站试点项目安全高效运行

openEuler

Vue基础学习(四)

Studying_swz

Vue 11月月更

玩转子网划分和超网汇聚

海风极客

网络 子网划分 11月月更 超网汇聚

汽车产业“芯事”何解?

易观分析

汽车芯片

计算机网络:随机访问介质访问控制之令牌传递协议

timerring

令牌桶 11月月更

涨姿势了,这 4 个场景可用 CSS 完全取代 JS ~

掘金安东尼

前端 11月月更

就这一次!带你彻底搞清MySQL行级锁的加锁规则

Java永远的神

MySQL 数据库 索引 Java 面试题

Redis Cluster 数据分片

月明风清

redis redis cluster 数据切片

2022-11-11:设计一个最大栈数据结构,既支持栈操作,又支持查找栈中最大元素。 实现 MaxStack 类: MaxStack() 初始化栈对象 void push(int x) 将元素 x 压

福大大架构师每日一题

Java 算法 福大大

Java Web(五)Web

浅辄

tomcat javaWeb 11月月更

Python进阶(二十五)Python读写文件

No Silver Bullet

Python 文件读写 11月月更

设计模式之美-面向对象对比面向过程有哪些优势?面向过程过时了吗?

GalaxyCreater

设计模式

聚焦银行APP用户体验,易观千帆GX指数即将独家首发

易观分析

易观

opensd开源啦 !这套自动化部署OpenStack工具你值得拥有

openEuler

开源 操作系统 openEuler OpenStack

玩转MySQL表之间的各种连接查询

海风极客

MySQL 数据库 11月月更

部署和体验Helm(2.16.1版本)

程序员欣宸

Kubernetes Helm 11月月更

SAP UI5 数据绑定中的工厂函数

Jerry Wang

SAP Fiori SAP UI5 ui5 11月月更

运维进阶训练营 -W03H

赤色闪电

运维

探知数字化研发1-前言篇

薛飞

数字化 软件研发

MySQL事务底层原理和MVCC机制

海风极客

MySQL 数据库 MVCC 11月月更

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

小哈区块

类继承

Maybe_fl

寄存器基本原理介绍(上篇)_语言 & 开发_周澳_InfoQ精选文章