80386/386/Intel386 架构/流水线及其优化
80386 Architecture Overview
80386是Intel的第一代32位x86架构处理器,内部32位的数据通路,外部32位的数据总线与地址总线,标志着32位程序设计时代的到来。硬件层面上的特权级指令,多任务,32位保护模式,虚拟内存管理等机制为32位的多用户多任务操作系统提供了原生支持,具有划时代的意义。
80386架构主要有以下主要的单元构成:总线接口单元,指令预取单元,指令译码单元,内存管理单元(包括段管理单元和分管理单元),以及执行单元。相比起80286,386新增了独立指令译码单元。286的地址单元扩张成了内存管理单元,由独立的段管理单元和页管理单元构成,所以有时也称386的内存管理是段页式管理机制。
下图是一个较为详细的Intel386™ DX处理器的功能模块图。对该图的详细讲解会放在其他章节里,这里供读者参考。
80386 Instruction Pipeline Details
80386依然使用了类似于286的3级流水线:取指,译码和执行。
需要注意的是,从下图中可以看出在某些情况下,下一条指令的地址计算可以和当前指令的执行并行进行,在某种程度上增加了并行度,提升了指令的吞吐量。但是地址计算并不是80386指令流水线中独立的一级。
Instruction Prefetcher
指令预取单元从外部存储器中读取指令流。预取到的指令临时存储在4-deep,4-byte-wide的预取缓存中(TODO: 是不是意味着指令缓存是4x4=16字节?)。这些指令接下来将会由指令译码器处理。
注:由于x86指令属于变长指令格式,预取缓存中的指令并没有划分出指令边界,所以我们称之为指令流。
Instruction decoder
指令译码器将译码后的指令存储在一个3-deep(TODO: 意味着可以保存3条已译码的指令)的先入先出队列中,这个队列被称为已译码指令队列。指令译码器将指令预取单元和处理器执行核解耦合,与两者都有各自的通信协议。
Execution Core
处理器执行核(即前两代产品中执行单元EU)一次执行一条指令。在某些条件下,当前指令的最后一个时钟周期可以与下一条指令的有效地址计算重叠在一起执行,参看下图中的MMU部分(以红线标出)。
Optimization Consideration
从编译器开发人员的角度来看,指令预取/译码/执行3阶段 的解耦合, 执行核的顺序执行特征,这两点几乎都没有对指令的调度提出太多需求。在计算有效地址时避免使用索引寄存器可以节省一个时钟周期。 最好的优化方法就是非常小心的选择指令使得执行时间最小化。
80386/386/Intel386 架构/流水线及其优化相关推荐
- Intel 64/x86_64/x86/IA-32处理器标志寄存器详解(2) - 32位EFLAGS - 80386(386, Intel386)/80486(486, Intel486)
80386/386/Intel386标志寄存器EFLAGS 80386增加了RF/VM标志位,用于支持虚拟8086模式与指令断点调试. 80486/486/Intel486标志寄存器EFLAGS (1 ...
- Pentium Pro架构/流水线及其优化 (3) - 指令流水线/乱序执行核/高速缓存/分支预测/指令预取
Instruction Pipeline 关于Pentium Pro的指令流水线,我从4个来源看到3种不同的说法:11级,12级和14级(没有13级说,不大吉利吧).其实大同小异,不用纠结到底是多少级 ...
- 8086架构/流水线及其优化
8086处理器的指令流水线 8086 Architecture Overview 8086处理器的架构整体上非常简单,大致由两个主要的单元构成:总线接口单元BIU和执行单元EU. 总线接口单元负责与外 ...
- Pentium Pro架构/流水线及其优化 (2) - 指令流水线 存储子系统详解
Pentium Pro Instruction Pipeline Details 处于讲解指令流水线的需要,接下来我们详细的讲解一下Pentium Pro微架构中的相关单元.上图是Pentium Pr ...
- Pentium Pro架构/流水线及其优化 (1) - 架构概述
Pentium Pro Architecture Overview Intel在1995年发布的Pentium Pro是第6代x86架构处理器,基于P6微架构.由于1993年的Pentium使用的超标 ...
- Pentium奔腾架构/流水线及其优化
Pentium Architecture Overview Intel在1993年发布的Pentium是一款先进的超标量处理器.相比起80486,Pentium的功能模块更加复杂: 一级高速缓存单元从 ...
- 80486/486/Intel486 架构/流水线及其优化
Intel486 Architecture Overview 80486相比80386新增了几个功能单元,包括高速缓存单元(即片上的一级缓存),逻辑上的两级译码单元,浮点单元也集成到处理器执行核内部. ...
- Intel Core Enhanced Core架构/微架构/流水线 (3) - 流水线概述
Intel® Core Microarchitecture Pipeline Overview Intel Core微架构的流水线包括: 有序发射前端,从内存中获取指令,利用4个指令译码器将x86指令 ...
- cpu并行和gpu并行_GPU并行架构及渲染优化
最近在看关于GPU架构和渲染优化方面的内容,记录一下,不正确的地方请大神们斧正!本文将主要分为以下四个部分: CPU与GPU GPU并行结构 GPU渲染管线 GPU渲染优化 一.CPU与GPU 1.C ...
最新文章
- react-router-dom v6 中的Routes
- JAVA命令行编译及运行
- python调用pyd_Python生成pyd文件
- 运行 vue 报node错
- ie 不执行回调函时_javascript引擎执行的过程的理解--执行阶段
- velocity 继续之 语法学习篇
- python写一个自动登录脚本_Python 脚本登录交换机实现自动配置备份
- 洛谷P1434-滑雪【线性化Dp】
- SSE事件作用,错误分析
- 3-3HDFS中文件的读写操作
- LeetCode 295. Find Median from Data Stream
- SuseLinux详解(2)——网络设置静态IP 网关 DNS的方法
- 如何批量处理Word中的图片大小
- mysql 查询polygon_如何通过mysql 判断点是否在指定多边形区域内
- Sql代码美化工具:Sql Pretty Printer for SSMS V3.6.1
- 2022年最新最全uniapp入门学习,零基础入门uniapp到实战项目,unicloud数据后台快速打造uniapp小程序项目
- 基于Web的电子商务解决方案(1)(转)
- SincNet 原始波形的说话人识别
- matlab线性代数(diag)
- 年轻人买出来的智能清洁“三巨头”:科沃斯“稳健”,石头“敏锐”、追觅“灵动”
热门文章
- 【java基础知识】java.util.LinkedHashMap cannot be cast to com.XXX.XXX
- 广告拦截之easylist和easylistchina订阅地址
- java 手机信息管理系统照相功能_Android实现手机拍照功能
- python多变量拟合_Python曲线将多个参数拟合到多个数据集
- 确保河道环境_开展河道整治 改善生态环境
- python程序设计与应用第1章
- golang python扩展_Python: C扩展初体验
- 模态识别在计算机视觉应用,相关性学习在计算机视觉任务中的研究与应用
- linux (centos7)安装3.7.8
- 什么是pisa测试_PISA测试排名世界第一,中国教育已是世界冠军?