CPU的核心原理

前面我们这里假设的 CPU 很基础,所有指令都是 8 位,操作码只占了前面 4 位,即便用尽 4 位,也只能代表 16 个指令,而且我们有几条指令,是用后 4 位来指定内存地址,因为 4 位最多只能表示 16 个值,所以我们只能操作 16 个地址,这可不多。我们甚至不能 JUMP 17,因为 4 位二进制无法表示数字 17。

真正的现代 CPU 用两种策略

  1. 最直接的方法是用更多位来代表指令,比如 32 位或 64 位,这叫 指令长度。
  2. 第二个策略是 "可变指令长度",举个例子,比如某个 CPU 用 8 位长度的操作码,如果看到 HALT 指令,HALT 不需要额外数据,那么会马上执行。如果看到 JUMP,它得知道位置值,这个值在 JUMP 的后面,这叫 "立即值"。这样设计,指令可以是任意长度,但会让读取阶段复杂一点点。

4004 处理器

要说明的是,我们拿来举例的 CPU 和指令集都是假设的,是为了展示核心原理所以我们来看个真的 CPU 例子。

1971年,英特尔发布了 4004 处理器。这是第一次把 CPU 做成一个芯片,给后来的英特尔处理器打下了基础,它支持 46 个指令,足够做一台能用的电脑。它用了很多我们说过的指令,比如 JUMP ADD SUB LOAD,它也用 8 位的"立即值"来执行 JUMP, 以表示更多内存地址。

处理器发展

处理器从 1971 年到现在发展巨大.,现代 CPU, 比如英特尔酷睿 i7, 有上千个指令和指令变种,长度从1到15个字节。举例,光 ADD 指令就有很多变种。指令越来越多,是因为给 CPU 设计了越来越多功能。

本文分享自微信公众号 - 程序员成长充电站(qianpangzi8),作者:钱胖子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CPU处理程序的三个阶段

    我们已经做了一个算术逻辑单元(ALU)输入二进制,它会执行计算。我们还做了两种内存: 寄存器 - 很小的一块内存,能存一个值 ,之后我们增大做出了 ,RAM 是...

    硬核编程
  • CPU怎么去执行程序的?

    从 "取指令" 开始,"指令地址寄存器" 现在的值是 1 到 "解码" 阶段! 0001 是 LOAD B 指令 从 RAM 里把一个值复制到寄存器 B,这次内...

    硬核编程
  • CPU最重要的指令JUMP

    我们还把内存中 3 和 14 两个数字,改成 1 和 1,现在来从 CPU 的视角走一遍程序。

    硬核编程
  • 你打boss我捡宝贝可好-向R包作者致敬(R包安装)

    http://www.ituring.com.cn/article/273090

    生信技能树
  • Ex1:图像读取和显示以及像素操作

    dev下搭建环境,详情见https://www.jianshu.com/p/d5e18b9b0333

    平凡的学生族
  • 特征工程最后一个要点 : 特征预处理

    地址:https://www.cnblogs.com/pinard/p/9093890.html

    机器学习算法工程师
  • 特征工程之特征预处理

        在前面我们分别讨论了特征工程中的特征选择与特征表达,本文我们来讨论特征预处理的相关问题。主要包括特征的归一化和标准化,异常特征样本清洗与样本数据不平衡问...

    刘建平Pinard
  • 3.1 ASM-方法-结构

    ASM-方法-结构 本章将会介绍如果使用ASM core API生成或者转换Java编译后的method。 本将开始会展示编译后的method,然后使用很多说...

    白凡
  • Centos7服务器用户和权限管理配置

    十里桃花舞丶
  • 创意没的说,全新HoloLens安全帽助力工程项目安全

    VRPinea

扫码关注云+社区

领取腾讯云代金券