当前位置: 首页 > article >正文

Code The Hidden Language of Computer Hardware and Software 学习:CPU 控制信号电路详解

概述这8张图描述了一个简单8位CPU的控制逻辑电路负责在不同机器周期取指、PC自增、执行中按正确时序产生各种控制信号驱动寄存器、RAM、ALU等部件协同工作。一、机器周期的基本结构CPU每执行一条指令都要经历若干机器周期Machine Cycle每个机器周期又细分为若干**时钟脉冲Pulse**控制的步骤。一条指令的完整流程 ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 取指周期1 │→ │ 取指周期2 │→ │ 取指周期3 │→ │ PC自增周期 │ │ Fetch Cycle 1│ │ Fetch Cycle 2│ │ Fetch Cycle 3│ │ PC Increment │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ │ └────────────────────────────────────────────────────────┘ ↓ ┌──────────────────────┐ │ 执行周期1 (EC1) │ │ Execute Cycle 1 │ └──────────────────────┘ ↓ ┌──────────────────────┐ │ 执行周期2 (EC2) │ │ Execute Cycle 2 │ └──────────────────────┘注意取指周期的数量取决于指令的字节数1字节、2字节或3字节指令。二、图1 — 取指周期的控制信号电路电路功能在取指阶段CPU需要把程序计数器PC的值放到16位地址总线上让RAM知道去哪个地址取指令把RAM输出的数据放到8位数据总线上送入指令锁存器用Pulse信号把地址值存入增减器锁存把数据存入对应指令锁存器信号真值关系取指周期FC1FC2FC3Pulse功能Fetch 1100上升沿PC使能数据→指令锁存1地址→增减器Fetch 2010上升沿PC使能数据→指令锁存2地址→增减器Fetch 3001上升沿PC使能数据→指令锁存3地址→增减器关键逻辑分析FC1 ──┬──┐ FC2 ──┤ ├─[AND]──→ 程序计数器使能Program Counter Enable FC3 ──┘ │ → RAM数据输出使能RAM DO Enable[经三态缓冲] │ → 增减器时钟Inc-Dec Clock[经三态缓冲] Pulse ───┤ │ FC1Pulse → 指令锁存器1时钟IL1 Clock FC2Pulse → 指令锁存器2时钟IL2 Clock FC3Pulse → 指令锁存器3时钟IL3 Clock三态缓冲TRI的作用之所以 “RAM DO Enable” 和 “Inc-Dec Clock” 需要接三态缓冲是因为在执行周期也可能有其他电路向这两个信号写入控制值。三态缓冲让多个驱动源可以共享同一条控制线避免冲突。三、图2 — PC自增周期的控制信号电路背景每次取完指令字节PC需要自增1指向下一个字节。这个过程由专门的PC Increment Cycle信号驱动。电路逻辑PC自增周期信号 ──┬──[TRI]──→ 增量使能Increment Enable │ └──[AND]──(Pulse)──[TRI]──→ 程序计数器时钟PC ClockIncrement Enable让增减器输出 1 操作的结果到地址总线PC Clock PC自增信号 AND Pulse在Pulse的上升沿将增减后的值锁入程序计数器四、图3 — 执行脉冲信号的生成执行周期有两个阶段通过与Pulse信号相与生成两个精准的执行脉冲EP1EC1⋅PulseEP1 EC1 \cdot PulseEP1EC1⋅PulseEP2EC2⋅PulseEP2 EC2 \cdot PulseEP2EC2⋅PulseEC1 ──┐ ├─[AND]──→ EP1执行脉冲1 Pulse─┤ └─[AND]──→ EP2执行脉冲2 EC2 ──┘EC1/EC2执行周期1/2 的状态信号电平信号高电平表示当前处于该周期EP1/EP2在对应执行周期内Pulse的上升沿触发实际的锁存动作五、图4 — HLT停机指令这是最简单的指令控制逻辑HaltHLT⋅EP1Halt HLT \cdot EP1HaltHLT⋅EP1HLT来自指令译码器──┐ ├─[AND]──→ Halt送往振荡器停止电路 EP1 ────────────────────┘当指令译码器识别到HLT指令且执行脉冲1到来时产生Halt信号Halt信号会关闭CPU的时钟振荡器让CPU停止运行六、图5 — 16位地址总线的二极管ROM矩阵什么是二极管ROM矩阵二极管ROM矩阵是一种用二极管阵列实现的只读存储器可以把多个输入信号行映射到多个输出信号列是实现复杂逻辑真值表的简洁方式。输入信号行→ [二极管矩阵] → 输出信号列该矩阵的输入与输出输入指令类型指令说明MOV r,M把内存[HL]的值移到寄存器rMOV M,r把寄存器r的值移到内存[HL]MVI M,data把立即数写入内存[HL]ADD M …把内存[HL]的值加到累加器INX HLHL寄存器加1DCX HLHL寄存器减1LDA从16位地址装载累加器STA把累加器存到16位地址输出控制信号由EC1、EP1、EC2、EP2四个时序信号分组使能EC1时序控制 → HL EnableHL寄存器内容放到地址总线 → Inst. Latch 23 Enable指令锁存2、3内容放到地址总线用于LDA/STA EP1时序控制 → Inc-Dec Clock把地址总线的值锁入增减器用于INX/DCX EC2时序控制 → HL Select选择HL寄存器作为目标 → Inc. Enable增减器输出1 → Dec. Enable增减器输出-1 EP2时序控制 → HL Clock把增减结果锁入HL寄存器INX HL 的完整执行流程步骤1 (EC1)HL Enable 有效 → HL的16位值出现在地址总线上 步骤2 (EP1)Inc-Dec Clock 有效 → 地址总线的值被锁入增减器锁存器 步骤3 (EC2)Inc. Enable 有效 → 增减器对锁存值执行1结果出现在地址总线 步骤4 (EP2)HL Clock 有效 → 地址总线上的新值HL1被锁入H和L寄存器七、图6 — 8位数据总线的二极管ROM矩阵执行周期1这张图处理执行周期1中数据总线上的信号分为两个三态缓冲组EC1 组数据总线上放什么指令数据总线来源MOV r,r寄存器阵列RA EnableMOV r,MRAM数据输出RAM DO EnableMOV M,r寄存器阵列RA EnableMVI r,data指令锁存2Inst. Latch 2 EnableMVI M,data指令锁存2Inst. Latch 2 EnableADD r …寄存器阵列RA EnableADD M …RAM数据输出RAM DO EnableADI data指令锁存2Inst. Latch 2 EnableLDARAM数据输出RAM DO EnableSTA累加器Acc. EnableEP1 组数据总线上的值存到哪里指令存储目标MOV r,rRA Clock寄存器阵列时钟存入寄存器MOV r,MRA ClockMOV M,rRAM Write写入RAMMVI r,dataRA ClockMVI M,dataRAM WriteADD r …ALU Clock送入ALU锁存ADD M …ALU ClockADI dataALU ClockLDAAcc. Clock存入累加器STARAM Write八、图7 — 8位数据总线的二极管ROM矩阵执行周期2算术/逻辑指令需要第二个执行周期完成运算ALU_Enable(ADD_rADD_MADI)⋅EC2ALU\_Enable (ADD\_r ADD\_M ADI) \cdot EC2ALU_Enable(ADD_rADD_MADI)⋅EC2Acc_Clock(ADD_rADD_MADI)⋅EP2Acc\_Clock (ADD\_r ADD\_M ADI) \cdot EP2Acc_Clock(ADD_rADD_MADI)⋅EP2ADD r ... ──┬──[EC2 TRI]──→ ALU EnableALU结果放到数据总线 ADD M ... ──┤ ADI data ──┴──[EP2 TRI]──→ Accumulator ClockALU结果锁入累加器执行流程EC2ALU Enable有效ALU的运算结果出现在数据总线EP2Accumulator Clock有效数据总线上的结果锁入累加器九、示例程序分析图8程序功能从内存地址1000h开始的5个字节将它们相加结果存入0011h。程序清单地址 机器码 汇编指令 0000h: 2Eh MVI L, 00h ; L寄存器 00h 00h 26h MVI H, 10h ; H寄存器 10h → HL 1000h 10h 7Eh MOV A, M ; 累加器 内存[1000h]第1个数 23h INX HL ; HL 1001h 86h ADD M ; 累加器 内存[1001h]第2个数 23h INX HL ; HL 1002h 86h ADD M ; 累加器 内存[1002h]第3个数 23h INX HL ; HL 1003h 86h ADD M ; 累加器 内存[1003h]第4个数 23h INX HL ; HL 1004h 86h ADD M ; 累加器 内存[1004h]第5个数 32h STA 0011h ; 将累加器的值存入内存[0011h] 11h 00h 76h HLT ; 停机 0011h: 存放求和结果MOV A,M 指令的执行时序取指阶段3个取指周期 1个PC自增周期 FC1: PC→地址总线, RAM[PC]→指令锁存1 (存操作码 7Eh) PC自增: PC PC 1 执行阶段EC1 EP1 EC1: HL Enable → HL(1000h)→地址总线, RAM DO Enable → RAM[1000h]→数据总线 EP1: Acc. Clock → 数据总线的值锁入累加器ADD M 指令的执行时序取指阶段同上取出 86h 执行周期1EC1 EP1 EC1: HL Enable → HL→地址总线, RAM DO Enable → RAM[HL]→数据总线 EP1: ALU Clock → 数据总线的值送入ALU的操作数锁存器 执行周期2EC2 EP2 EC2: ALU Enable → ALU进行加法运算结果→数据总线 EP2: Acc. Clock → ALU结果锁入累加器十、整体架构总结┌─────────────────────────────────────┐ │ CPU 控制逻辑 │ │ │ 时序发生器 ──────→ │ FC1/FC2/FC3 PC_Inc EC1/EC2 │ (振荡器计数器) │ EP1/EP2 Pulse │ └─────────────────────────────────────┘ │ │ │ ┌────▼────┐ ┌────▼────┐ ┌───▼────┐ │ 取指电路 │ │PC自增 │ │执行电路 │ │(图1) │ │电路(图2)│ │(图5-7) │ └────┬────┘ └────┬────┘ └───┬────┘ │ │ │ ┌──────────▼────────────▼────────────▼─────────┐ │ 控制总线 │ │ PC_Enable, RAM_DO_Enable, Inc-Dec_Clock, │ │ IL1/IL2/IL3_Clock, HL_Enable, RA_Enable, │ │ RAM_Write, ALU_Enable, Acc_Clock, Halt... │ └──────────────────────────────────────────────┘ │ │ │ │ ┌────▼──┐ ┌───▼──┐ ┌────▼──┐ ┌───▼───┐ │ PC │ │ RAM │ │ ALU │ │寄存器 │ └───────┘ └──────┘ └───────┘ └───────┘十一、关键概念速查术语含义FC1/FC2/FC3取指周期1/2/3表示当前正在取指令的第几个字节PC Increment CyclePC自增周期取完一个字节后PC加1EC1/EC2执行周期1/2的电平使能信号EP1/EP2执行脉冲1/2 ECx AND Pulse用于精确触发锁存Pulse每个机器周期内的时钟脉冲触发所有锁存动作TRI三态缓冲允许多个信号源驱动同一条线未使能时呈高阻态IL1/IL2/IL3指令锁存器1/2/3存放1、2、3字节指令的各字节Inc-Dec Clock增减器锁存时钟把地址总线的值存入增减器HL Enable把HL寄存器的值放到16位地址总线RAM DO Enable把RAM的数据输出放到8位数据总线ALU Clock把数据总线的值锁入ALU的输入锁存器Acc. Clock把数据总线的值锁入累加器RAM Write把数据总线的值写入RAM地址来自地址总线

相关文章:

Code The Hidden Language of Computer Hardware and Software 学习:CPU 控制信号电路详解

概述 这8张图描述了一个简单8位CPU的控制逻辑电路,负责在不同机器周期(取指、PC自增、执行)中,按正确时序产生各种控制信号,驱动寄存器、RAM、ALU等部件协同工作。 一、机器周期的基本结构 CPU每执行一条指令&#xff…...

99.26%降AI达标率+9平台覆盖:嘎嘎降AI 4.8元单价怎么做到的?

挑降 AI 工具的时候很多同学最关心的是"达标率"——但市面上号称"高达标率"的工具不少,真正公开具体数据并能解释数据来源的不多。 嘎嘎降AI 公开的 99.26% 达标率是这次推荐的核心数据之一。这个数字不是营销话术——是基于超过十亿字符真实处…...

知网AIGC算法升级让你的降AI工具失效?嘎嘎降AI 7天免费再处理!

很多同学买完降 AI 工具就以为万事大吉了,但 2026 年毕业季有一个被忽略的真实风险——算法升级带来的"昨天 OK 今天突然超标"。 嘎嘎降AI 的售后保障里有一条很少有工具提供的政策——7 天内 AIGC 检测平台算法升级导致 AI 率变化也能免费再处理。这条政…...

赌不起场景买降AI率工具看什么?比话降AI 3+1保障实际损失为零!

赌不起场景是降 AI 工具市场上最特殊的需求——你的论文不能延毕、不能错过答辩、不能学位审核翻车。这种场景下选工具的逻辑跟普通场景完全不同。 普通场景看单价、效果、口碑就够了。赌不起场景看的是翻车场景下的真实损失——万一工具不达标你能承受多大的成本?…...

从气象预测到金融风控:交叉小波相干性分析在Matlab中的跨界应用实战

从气象预测到金融风控:交叉小波相干性分析在Matlab中的跨界应用实战 当环境科学家试图理解厄尔尼诺现象如何影响区域降雨模式,或是金融分析师需要预测不同资产类别的联动周期时,他们面临的共同挑战是:传统统计方法难以捕捉随时间变…...

手把手教你用Python调参:让LSTM和ARIMA在时间序列预测里“各司其职”(基于PyTorch和pmdarima)

时间序列预测实战:LSTM与ARIMA融合调参全流程解析 时间序列预测一直是数据分析领域的核心挑战之一。无论是金融市场的波动预测、能源消耗的趋势分析,还是电商平台的销售预估,精准的时间序列模型都能为决策提供关键支持。传统统计方法如ARIMA擅…...

DLSS Swapper完全指南:3分钟免费提升游戏画质与性能的终极方案

DLSS Swapper完全指南:3分钟免费提升游戏画质与性能的终极方案 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾在4K分辨率下游戏时,明明显卡性能足够,画面却依然模糊卡顿&am…...

目标检测YOLOv5前,别忘了用OpenCV给图像做个‘光照SPA’:预处理实战

目标检测YOLOv5前,别忘了用OpenCV给图像做个‘光照SPA’:预处理实战 在计算机视觉的实际工程中,我们常常过于关注模型架构的优化,却忽略了输入数据质量对最终性能的决定性影响。想象一下,即便是最先进的YOLOv5模型&…...

告别JSON臃肿:用Apache Avro为你的Kafka或Hudi数据瘦身(附实战代码)

告别JSON臃肿:用Apache Avro为你的Kafka或Hudi数据瘦身(附实战代码) 最近在优化数据管道时,发现JSON格式的数据体积膨胀得厉害——每条记录都要重复字段名,网络传输和磁盘存储的成本高得吓人。更糟的是,序列…...

基于Netty与WebSocket构建高性能物联网推送服务:从原理到实践

1. 项目概述与核心价值最近在折腾一个物联网项目,需要从一堆传感器节点里高效地收集数据。传统的轮询方式在节点数量上去之后,延迟和服务器压力都成了大问题。就在我琢磨着怎么优化架构时,偶然发现了 GitHub 上一个名为 “Caryyon/antenna” …...

Go语言WebSocket实时聊天后端架构设计与实现指南

1. 项目概述:一个轻量级的实时聊天应用后端 最近在折腾一个需要实时通信功能的小项目,不想用那些大而全的解决方案,感觉太重了,维护成本也高。于是就在开源社区里翻找,发现了 donapart/klatsch 这个项目。光看名字 “…...

终极碧蓝航线自动化脚本:Alas如何24小时解放你的双手 [特殊字符]

终极碧蓝航线自动化脚本:Alas如何24小时解放你的双手 🚢 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript …...

如何快速获取百度网盘提取码:baidupankey终极使用指南

如何快速获取百度网盘提取码:baidupankey终极使用指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘提取码而反复搜索浪费时间吗?baidupankey作为一款专业的百度网盘提取码智能获取工具…...

技术访问者的操作扩展与元素分离

技术访问者的操作扩展与元素分离:提升交互效率的新思路 在当今数字化时代,技术访问者(如自动化脚本、爬虫或API调用者)与网页元素的交互方式直接影响效率与稳定性。传统方法往往依赖固定的DOM结构,一旦页面布局变动&a…...

NVMe 2.3协议学习

文章目录1 Controller Properties1.1 如何访问1.2 Controller 初始化流程1.3 CAP - Controller Capabilities (Offset 00h, 64-bit)X 面试场景问题1 为什么Properties Host必须通过BAR访问,不能通过DMA?2 如果Host按dword访问qword的CAP会怎样&#xff1…...

深度学习篇---匈牙利算法与OC-SORT

匈牙利算法与OC-SORT,一个是解决“最优匹配”的经典运筹学方法,另一个是赋予其动态场景“感知”能力的现代多目标跟踪框架。两者结合,解决了一个核心问题:如何跨时间,将不同的“点”最合理地关联起来。🤝 匈…...

如何永久备份微信聊天记录?WeChatMsg让你的珍贵对话永不丢失

如何永久备份微信聊天记录?WeChatMsg让你的珍贵对话永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

c语言的练习—二维数组的练习(对称矩阵的判定)

对于此道题,所谓对称矩阵,意思就是关于左对角线对称的数字对应相等。那么我们不妨使用我上一次发表的文章的方法来进行规律的寻找。我们不妨使用题目中的第一个例子来举例接下来我以图片的方式呈现出来显然的,我们能够发现这两个三的位置和两…...

智慧树刷课插件终极指南:3分钟实现学习自动化,效率提升300% ⚡

智慧树刷课插件终极指南:3分钟实现学习自动化,效率提升300% ⚡ 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频学习…...

3分钟掌握ncmdump:网易云音乐NCM文件终极转换指南

3分钟掌握ncmdump:网易云音乐NCM文件终极转换指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他设备播放而烦恼吗?ncmdump是一款简单实用的NCM文件转换工具&am…...

【2026最新收藏版】AI Agent详解:从入门到实战,小白程序员必看的大模型智能体学习指南

本文专为2026年想要入门大模型、深耕AI Agent的小白和程序员打造,深入浅出拆解AI智能体的核心概念,清晰区分其与传统软件的本质差异,详解智能体四大关键特征(自主性、反应性、主动性、社交能力),拆解智能体…...

超越基础教程:用VPI+Matlab实现高阶QAM相干光通信系统的DSP算法实战

超越基础教程:用VPIMatlab实现高阶QAM相干光通信系统的DSP算法实战 在光通信领域,高阶QAM(正交幅度调制)技术因其高频谱效率而备受关注。然而,随着调制阶数的提升,系统对信号处理算法的要求也呈指数级增长。…...

GitHub中文界面终极汉化指南:3分钟告别英文困扰,提升30%开发效率

GitHub中文界面终极汉化指南:3分钟告别英文困扰,提升30%开发效率 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese …...

AzurLaneAutoScript:解放双手的碧蓝航线智能管家

AzurLaneAutoScript:解放双手的碧蓝航线智能管家 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航线…...

终极B站视频下载指南:DownKyi免费工具的完整使用教程

终极B站视频下载指南:DownKyi免费工具的完整使用教程 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#x…...

为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为

更多请点击: https://intelliparadigm.com 第一章:为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为 Linux 命名空间(namespaces)常被误认为是强隔离基石&…...

精美UI的单页网盘资源分享搜索页面 短剧搜索 自适应页面

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 单页网盘资源搜索,需要的同学进来看看。 电脑可以使用浏览器打开 手机可以用其他应用浏览器打开,打开即可使用。 源码为单html,可以随意进行使用,放本地浏…...

视觉语言导航技术:挑战、方案与SeeNav-Agent框架解析

1. 视觉语言导航的核心挑战与现有方案局限视觉语言导航(Vision-Language Navigation, VLN)作为多模态具身智能的关键任务,要求智能体根据自然语言指令在三维环境中完成导航。这项技术在实际应用中面临三大核心挑战:1.1 感知层面的…...

2.4 静态链表

#include <stdio.h> #include <malloc.h>// 默认链表容量 #define DEFAULT_SIZE 5typedef struct StaticLinkedNode{char data;int next; } *NodePtr;typedef struct StaticLinkedList{NodePtr nodes;int* used; } *ListPtr;/*** 初始化静态链表&#xff08;带头节…...

支付宝上线AI付,让众多“龙虾”实现收钱,详细开通步骤

大家好&#xff0c;我是小悟。 支付宝给“龙虾”装上了AI付功能。“龙虾”火到现在&#xff0c;应该都知道是啥&#xff0c;业内对OpenClaw这类AI智能体的称呼。它们能像真人一样帮你查资料、订机票、甚至购物下单。 现在&#xff0c;这些智能体连收钱都能自己搞定了。以前用AI…...