Intel公司在1974年4月发布8080 CPU。这是一枚8位元处理器,时脉为2MHz,亦是第一枚可算得上的处理器。

注意,这里的8位、16位指的是ALU的宽度,而并不是地址线的宽度(如果CPU与地址线的宽度相同,也就不需要分段管理了)。

从设计人员的角度来讲,把地址宽度与ALU宽度设计成一样,这是最简单便捷的。但是,这显然是不合理的——8位的地址线只能寻址256位,这样的存储空间基本上什么都做不了。

所以,8位的ALU对应的是16位的地址线——寻址空间为64k,这个内存空间在上世纪70年代(1974?)来说,够用了。

1978年,8086 CPU问世(第一枚真正意义上的通用微处理器),此时,CPU已经是16位。ALU的宽度与地址线的宽度已经一致了,似乎完美的时刻到了。

不过,到1978年的时候,程序猿们觉得内存似乎还是有些小了(小?),与此同时,内存的价格也不再是天价。Intel决定把地址线的宽度再扩个容。

地址线扩成多大呢?20位,也就是说,此时的CPU寻址能力是1MB。

1MB的内存空间在现在看来,实在是很小很小。不过,在1978年的程序员看来,这实在是微处理器内存中的巨无霸了——因为1978年的小型机(如PDP-11)也就才4MB的内存空间。

可是,多出来的4位怎么弥补呢?

当时一般有如下2种方法:

1、在16位CPU内专门设计一些用于20位的指令用于地址运算和寻址。(会造成CPU内部结构特殊化,如果CPU变成32位,需要从头改造)

2、PDP-11的MMU内存管理机制。(小型机解决方案,可以寻址到24位——4MB)

Intel选择了第三种——段式管理。

Intel设计了4个新的寄存器:CS、DS、SS、ES分别用于存储指令、数据、堆栈、其他。

分段的设计模式是:把整块内存空间分割成多个(?)段,以上4个寄存器存储的是当前(记住,是当前)操作的段的起始地址。由于CPU只能寻址16位,每个段的限长是64k。16位的段地址左移四个二进制位,加上16位的段内偏移地址,得到的和就是20位的物理地址。

不过,由于段式管理是Intel在某种条件(?)下设计出来的,Linux以及大多数操作系统对段式管理基本上避而远之的。

实际上,在Linux内核里,对分段管理用得极少,而DS、SS的指向基本上也从来没有做过区分;Linux的内核也仅用了段的0级、3级权限——它并没有陷入Linux以及别的芯片厂商的设计之中,真正做到了独立性。

每一个企业造出来的CPU或者数据库或者别的什么产品,都有其本源的商业驱动力,目的都是盈利。

所以,不需要站在一个产品内部去看问题,也不要把它供起来当成祖师爷膜拜。只有把一个产品当成一个普通朋友,明白它的优点和缺陷,心思和小九九,才能得心应手、运用自如。

至于Linux是如何看透Intel的小九九,又如何避免的呢? Linux是如何做到的呢?

以后再做分析。

Intel的X86芯片段式管理历史起源(CS、DS、ES、SS)——避免产品公司的小九九相关推荐

  1. 芯片相关-- Cpu历史--intel系列

    Cpu历史之intel系列 4004 4004是美国英特尔公司(Intel)推出的第一款微处理器,也是全球第一款微处理器:1971年11月15日发布.4004处理器的尺寸为3mm×4mm,外层有16只 ...

  2. 苹果自研M1芯片的功耗和发热都仅为Intel x86芯片的1/3左右

    苹果晒出M1 Mac功耗,苹果对自己芯片的功耗一直没有提及,而现在官方文档也是首次给出了答案. 苹果在支持文档中更新了M1 Mac mini的功耗和热输出 (BTU) 信息,这个页面还有所有旧款Mac ...

  3. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  4. Linux段式管理与页式管理

    内存管理有2种机制:1.段式管理:2.页式管理 在80386CPU中增加了2个寄存器:1.全局性的段描述表寄存器GDTR 2.局部性的段描述表寄存器LDTR 段寄存器的高13位用于在全局或局部描述表项 ...

  5. 近日网上传出消息,ARM正与Intel共同开发制造芯片

    近日网上传出消息,ARM正与Intel共同开发制造芯片,让芯片设计者能够基于Intel 18A制程打造低功耗的SoC.另有多位业内人士透露,这次制造的芯片将主要用于移动设备.笔记本电脑.数据中心等. ...

  6. M1 暴打 Intel?——x86 与 ARM 的爱恨情仇

    最近这段时间数码圈里最火的莫过于苹果最新推出的三款基于自研芯片 M1 的电脑了,分别是 MacBook Air.13 寸的 MacBook Pro 以及 Mac Mini.其热度也是久居不下,哪怕距离 ...

  7. 操作系统内存管理——分区、页式、段式管理

    操作系统内存管理--分区.页式.段式管理 标签: 内存管理操作系统数据结构算法 2010-07-05 11:26 20805人阅读 评论(5) 收藏 举报 分类: 操作系统(4) 版权声明:本文为博主 ...

  8. deepin、dde的历史起源与发展(附deepin所有版本的dde截图)

    文章目录 前排说明: 捋顺名词: deepin: dde: dtk: deepin 发展历史: deepin 历史版本的发布: Hiweed Linux 时期: Linux Deepin 时期: De ...

  9. DTK的历史起源、发展,和简单入门(精华篇)

    文章目录 一点碎碎念~: 背景交代: dtk 名称的理解(易混淆): DTK 的历史起源: dtk 项目的历史演变(含名称): 样式变化: 0 -> 1 的诞生 dui: deepin-tool ...

最新文章

  1. 哥伦比亚大学「机械手」无需提前了解抓握物体,也能灵活适应形状!
  2. CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
  3. 13-numpy笔记-莫烦pandas-1
  4. Flex不支持SOAP1.2
  5. MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
  6. ubuntu系统下gedit 打开GBK字符集编码文件出现乱码问题解决办法
  7. 科目三路考需准备事项
  8. ManualResetEvent详解
  9. THINKPHP3文件缓存管理
  10. Innodb独立的undo tablespace
  11. 如何在M1上运行较早的非本机Intel x86应用
  12. 图像直方图均衡 matlab,图像直方图均衡化
  13. 修改解锁植物大战僵尸所有模式、关卡、金钱
  14. visual studio code Python终端运行_深入比较kaldi和python_speech_features提取的fbank特征之间的区别...
  15. html作业介绍家乡,dreamweaver网页大作业 我的家乡
  16. Blender摄像机环绕运动、动画渲染、视频合成
  17. Day7-Python综合作业1(DataWhale)
  18. 蓝桥旧题_剪邮票问题
  19. ng-alain php,angular基于ng-alain定义自己的select组件示例
  20. 创新案例分享 | 临床研究数据信息互联互通,共创医疗新局面

热门文章

  1. win8.1 库 计算机,Win8.1资源管理器库丢失?一键轻松找回
  2. 学校计算机机房台账,机房工作
  3. PowerShell实现“机器人定时在企业微信群中发送消息”功能(下)
  4. 支持javascript的ppt软件_强大CSS3的3D幻灯片工具reveal.js(推荐)
  5. 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
  6. (四)Linux 安装 jdk
  7. java newfile() bug_java-运行类时,它将生成一个0kb的空白文件.有人可以指出我的错误之处吗?...
  8. golang 文件md5_golang 计算大文件md5
  9. ubuntu中的大小写
  10. 利用U-Net进行两阶段超声图像分割,并增加测试时间