架构图

8086 CPU 架构图

数据单元

为了暂存数据,8086 处理器内部有 8 个 16 位的通用寄存器,也就是刚才说的 CPU 内部的数据单元,

分别是 AX、BX、CX、DX、SP、BP、SI、DI。

这些寄存器主要用于在计算过程中暂存数据。

这些寄存器比较灵活,其中 AX、BX、CX、DX 可以分成两个 8 位的寄存器来使用,

分别是 AH、AL、BH、BL、CH、CL、DH、DL,

其中 H 就是 High(高位),L 就是 Low(低位)的意思。

控制单元

IP 寄存器就是指令指针寄存器(Instruction Pointer Register),指向代码段中下一条指令的位置。

CPU 会根据它来不断地将指令从内存的代码段中,加载到 CPU 的指令队列中,然后交给运算单元去执行。

每个进程都分代码段和数据段,为了指向不同进程的地址空间,

有四个 16 位的段寄存器,分别是 CS、DS、SS、ES。

CS 就是代码段寄存器(Code Segment Register),通过它可以找到代码在内存中的位置;

DS 是数据段的寄存器,通过它可以找到数据在内存中的位置。

SS 是栈寄存器(Stack Register)。

栈是程序运行中一个特殊的数据结构,数据的存取只能从一端进行,秉承后进先出的原则,push 就是入栈,pop 就是出栈。

凡是与函数调用相关的操作,都与栈紧密相关。例如,A 调用 B,B 调用 C。当 A 调用 B 的时候,要执行 B 函数的逻辑,因而 A 运行的相关信息就会被 push 到栈里面。当 B 调用 C 的时候,同样,B 运行相关信息会被 push 到栈里面,然后才运行 C 函数的逻辑。当 C 运行完毕的时候,先 pop 出来的是 B,B 就接着调用 C 之后的指令运行下去。B 运行完了,再 pop 出来的就是 A,A 接着运行,直到结束。

在 CS 和 DS 中都存放着一个段的起始地址。代码段的偏移量在 IP 寄存器中,数据段的偏移量会放在通用寄存器中。

CS 和 DS 都是 16 位的,也就是说,起始地址都是 16 位的,

IP 寄存器和通用寄存器都是 16 位的,偏移量也是 16 位的,

但是 8086 的地址总线地址是 20 位。

怎么凑够这 20 位呢?

方法就是“起始地址 *16+ 偏移量”,也就是把 CS 和 DS 中的值左移 4 位,变成 20 位的,加上 16 位的偏移量,

这样就可以得到最终 20 位的数据地址。

从这个计算方式可以算出,无论真正的内存多么大,对于只有 20 位地址总线的 8086 来讲,能够区分出的地址也就 2^20=1M,超过这个空间就访问不到了。这又是为啥呢?如果你想访问 1M+X 的地方,这个位置已经超过 20 位了,由于地址总线只有 20 位,在总线上超过 20 位的部分根本是发不出去的,所以发出去的还是 X,最后还是会访问 1M 内的 X 的位置。

那一个段最大能有多大呢?因为偏移量只能是 16 位的,所以一个段最大的大小是 2^16=64k。

32 位处理器

在 32 位处理器中,有 32 根地址总线,可以访问 2^32=4G 的内存。

首先,通用寄存器有扩展,可以将 8 个 16 位的扩展到 8 个 32 位的,但是依然可以保留 16 位的和 8 位的使用方式。

其中,指向下一条指令的指令指针寄存器 IP,就会扩展成 32 位的,同样也兼容 16 位的。

改动比较大,有点不兼容的就是段寄存器(Segment Register)。

CS、SS、DS、ES 仍然是 16 位的,但是不再是段的起始地址。段的起始地址放在内存的某个地方。

这个地方是一个表格,表格中的一项一项是段描述符(Segment Descriptor)。

这里面才是真正的段的起始地址。而段寄存器里面保存的是在这个表格中的哪一项,称为选择子(Selector)。

将一个从段寄存器直接拿到的段起始地址,就变成了先间接地从段寄存器找到表格中的一项,再从表格中的一项中拿到段起始地址。

这样段起始地址就会很灵活了。当然为了快速拿到段起始地址,段寄存器会从内存中拿到 CPU 的描述符高速缓存器中。

因而到了 32 位的系统架构下,我们将前一种模式称为实模式(Real Pattern),后一种模式称为保护模式(Protected Pattern)。

当系统刚刚启动的时候,CPU 是处于实模式的,这个时候和原来的模式是兼容的。

也就是说,哪怕你买了 32 位的 CPU,也支持在原来的模式下运行,只不过快了一点而已。

当需要更多内存的时候,你可以遵循一定的规则,进行一系列的操作,然后切换到保护模式,就能够用到 32 位 CPU 更强大的能力。

笔记: CPU 组件图相关推荐

  1. 【设计模式】UML建模之包图、组件图和部署图学习笔记

    UML建模中包图.组件图和部署图学习笔记 对于较大的项目进行UML建模,由于有很多的类和用例,仅仅利用类图和用例图的话,常常会使结构变得更为复杂.此时如果可以以功能模块划将类图和用例图进行封装,可以很 ...

  2. Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

    Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用 按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习. 1.官网关于组件的介绍 组件是视图层的基本组成单元,是一个单独且可复用的 ...

  3. 温度过高时蜂鸣器报警,自认为的简简单单的实验能有啥困难?(附DS18B20温度传感器的详细笔记和时序图)

    如果说写代码花了x小时,那么就找错误花了y小时(且y>2x),到最后发现就是个非常小的忽略! 温度传感器的配置文件写好了,下板子也正常实时显示温度.那为啥想完成个温度>30度就让蜂鸣器报警 ...

  4. 【笔记整理】图神经网络学习

    [笔记整理]图神经网络学习 文章目录 [笔记整理]图神经网络学习 一.GNN简介 1.图结构 & 图基础算法 1)引言("非欧几何, 处理图数据的NN") 2)图基本概念 ...

  5. 项目前期——用例图、类图、活动图、组件图

    建立模型是为了更好地理解要模拟的现实世界,是软件开发方法的核心问题.在结构化方法中,使用SA构建系统的环境模型和逻辑模型,实现模型的主要工具有数据字典(DD).ER图和数据流图(DFD). 面向对象方 ...

  6. 服务器cpu天梯图_九月手机处理器排名 2020年9月最新版手机CPU天梯图

    Hello,大家好,WEB开发者网新的一期手机CPU天梯图又和大家见面了.虽然近一个月,各芯片厂商新发布的手机处理器并不多,但各家下一代旗舰产品也都有了更多的新消息.今天,小编通过手机CPU天梯图20 ...

  7. cpu序列号唯一吗_手机CPU天梯图2020年1月最新版 你的手机处理器排名高吗?

    手机处理器作为目前智能手机最核心的硬件,融合了CPU.GPU.基带.AI等诸多模块,与手机性能体验息息相关,可以说,看一款手机的性能,一般看CPU就够了.下面小编带来最新一期手机CPU天梯图2020年 ...

  8. Mini 容器学习笔记4——组件的生命周期(应用篇)

    Mini容器支持6中生命周期类型: 1. Singleton :单利类型(缺省组件都是单利类型的生命周期,由容器进行托管的) [Test]public void SingletonLifestyleT ...

  9. UML模型中的图-实现图【组件图、配置图】

    前言 前面几篇博客小编为大家分享了UML建模中的用例图.静态图.行为图,交互图,本篇继续为大家分享UML模型中的最后一种类型图- 实现图 .实现图用来描述设计的物理实现,如执行文件.库.表.文件.文档 ...

最新文章

  1. python简单代码表白-python浪漫表白源码
  2. python 跳水板
  3. golang 程序部署及Supervisord deamon 运行
  4. 20181013xlVba导入成绩
  5. 计算机控制技术黄勤,微型计算机控制技术 教学课件 黄勤 第3章微型计算机控制系统的常用控制.ppt...
  6. Linux系统运维成长记
  7. Linux chmod命令
  8. c语言基础知识难点,C语言基础的几个难点解析
  9. 手机修改html离线网页内容,HTML5 离线应用之打造零请求、无流量网站的解决方法...
  10. matlab节约里程法_vrp几种算法的matlab源代码(扫描算法,禁忌搜索算法,节约里程算法)...
  11. 高校学子如何免费上网?
  12. 复现论文常用函数(一)tf.one_hot,tf.train.batch,tf.train.shuffle_batch,数据读取机制,获取文件路径,Bunch等
  13. PINN内嵌物理知识神经网络投稿期刊总结
  14. stm32的简易小项目之震动感应灯
  15. android线程间通信的几种方法_Android进程间和线程间通信方式
  16. BootStrap框架模块:BootStrap4实战
  17. 为什么抖音一直显示服务器升级换不了头像,抖音换不了头像怎么回事
  18. JRXH静态信号继电器
  19. 【PTA】2022年蓝桥杯及天梯赛赛前训练(C++练习)
  20. 『DavyYew』看了又看的SD2.0

热门文章

  1. 【笔记】知识点:多表单提交
  2. 11、(十一)外汇基础篇之三个重要的表
  3. 关于爱情和青春的思考
  4. latex排版论文(学习笔记)
  5. 大学生课堂点名系统策划(想法,有错误的地方欢迎批评指正)
  6. 《序列》游戏攻略【43~48】
  7. Python网络爬虫之数据存储
  8. COLD MOUNTAIN
  9. NOIP2018(普及组)复赛
  10. 怎么不在Microsoft Edge内打开IE