flowchart TD subgraph Computer[计算机完整架构 - 基础元件级细化] direction TB subgraph CPU[中央处理器 CPU] direction TB subgraph Core[处理器核心] direction LR subgraph CU[控制单元 CU] direction TB subgraph InstrDec[指令译码器] direction TB ID_MUX1[多路复用器 // 指令字段选择] ID_Decoder1[地址解码器 // 操作码解码] ID_Decoder2[地址解码器 // 寄存器字段解码] ID_FF1[D触发器 // 指令锁存] ID_FF2[D触发器 // 状态保持] %% 指令译码器内部连接 ID_FF1 -- 锁存指令 --> ID_MUX1 ID_MUX1 -- 选择字段 --> ID_Decoder1 ID_Decoder1 -- 解码操作码 --> ID_Decoder2 ID_Decoder2 -- 寄存器地址 --> ID_FF2 end subgraph Microcode[微代码ROM] direction TB MC_ROM[ROM // 微指令存储] MC_AddrDecoder[地址解码器 // 微地址解码] MC_FF1[D触发器 // 微地址寄存器] MC_FF2[D触发器 // 微指令寄存器] MC_TriBuf1[三态缓冲器 // 微指令输出] %% 微代码ROM内部连接 MC_AddrDecoder -- 微地址 --> MC_ROM MC_ROM -- 微指令字 --> MC_FF2 MC_FF2 -- 锁存微指令 --> MC_TriBuf1 MC_FF1 -- 地址保持 --> MC_AddrDecoder end subgraph Timing[时序控制器] direction TB TC_Counter1[计数器 // 节拍计数] TC_Counter2[计数器 // 机器周期计数] TC_Decoder1[地址解码器 // 节拍解码] TC_FF1[D触发器 // 状态标志] TC_ClockGen[时钟生成器 // 时序生成] TC_AND1[逻辑运算器 // 条件与门] TC_OR1[逻辑运算器 // 条件或门] %% 时序控制器内部连接 TC_ClockGen -- 主时钟 --> TC_Counter1 TC_Counter1 -- 节拍计数 --> TC_Decoder1 TC_Decoder1 -- 节拍信号 --> TC_Counter2 TC_Counter2 -- 周期状态 --> TC_FF1 TC_FF1 -- 状态反馈 --> TC_AND1 end subgraph ControlBus[控制总线接口] direction TB CB_TriBuf1[三态缓冲器 // 控制信号输出] CB_TriBuf2[三态缓冲器 // 状态信号输入] CB_FF1[D触发器 // 控制信号锁存] CB_Decoder1[地址解码器 // 设备选择] %% 控制总线接口内部连接 CB_Decoder1 -- 设备选择信号 --> CB_TriBuf1 CB_TriBuf1 -- 控制信号输出 --> CB_FF1 CB_FF1 -- 锁存控制 --> CB_TriBuf2 end %% 控制单元内部连接 InstrDec -- 译码操作码 --> Microcode Microcode -- 微指令序列 --> Timing Timing -- 时序控制信号 --> ControlBus ControlBus -- 状态反馈信号 --> InstrDec end subgraph ALU[算术逻辑单元 ALU] direction TB subgraph AddSub[加法器/减法器] direction TB AS_Adder[加法器 // 二进制加法] AS_Subtractor[减法器 // 二进制减法] AS_XOR1[逻辑运算器 // 补码转换] AS_MUX1[多路复用器 // 运算选择] AS_FF1[D触发器 // 进位锁存] %% 加法器/减法器内部连接 AS_MUX1 -- 运算选择 --> AS_Adder AS_MUX1 -- 运算选择 --> AS_Subtractor AS_XOR1 -- 补码控制 --> AS_Subtractor AS_Adder -- 进位输出 --> AS_FF1 AS_Subtractor -- 借位输出 --> AS_FF1 end subgraph LogicUnit[逻辑运算单元] direction TB LU_AND[逻辑运算器 // 与运算] LU_OR[逻辑运算器 // 或运算] LU_XOR[逻辑运算器 // 异或运算] LU_NOT[逻辑运算器 // 非运算] LU_MUX1[多路复用器 // 逻辑操作选择] %% 逻辑运算单元内部连接 LU_MUX1 -- 操作选择 --> LU_AND LU_MUX1 -- 操作选择 --> LU_OR LU_MUX1 -- 操作选择 --> LU_XOR LU_MUX1 -- 操作选择 --> LU_NOT end subgraph ShiftUnit[移位器] direction TB SU_ShifterL[移位器 // 左移] SU_ShifterR[移位器 // 右移] SU_ShifterA[移位器 // 算术移位] SU_MUX1[多路复用器 // 移位类型选择] SU_FF1[D触发器 // 移位位数锁存] %% 移位器内部连接 SU_MUX1 -- 移位类型选择 --> SU_ShifterL SU_MUX1 -- 移位类型选择 --> SU_ShifterR SU_MUX1 -- 移位类型选择 --> SU_ShifterA SU_FF1 -- 移位位数 --> SU_ShifterL SU_FF1 -- 移位位数 --> SU_ShifterR SU_FF1 -- 移位位数 --> SU_ShifterA end subgraph ALUControl[ALU控制器] direction TB AC_Decoder1[地址解码器 // ALU操作码解码] AC_FF1[D触发器 // 操作码锁存] AC_MUX1[多路复用器 // 功能选择] AC_TriBuf1[三态缓冲器 // 控制信号输出] %% ALU控制器内部连接 AC_Decoder1 -- 解码操作码 --> AC_FF1 AC_FF1 -- 锁存操作 --> AC_MUX1 AC_MUX1 -- 功能选择 --> AC_TriBuf1 end subgraph ALUFlags[ALU标志寄存器] direction TB AF_FF1[D触发器 // 进位标志] AF_FF2[D触发器 // 零标志] AF_FF3[D触发器 // 符号标志] AF_FF4[D触发器 // 溢出标志] AF_FF5[D触发器 // 奇偶标志] AF_TriBuf1[三态缓冲器 // 标志输出] %% ALU标志寄存器内部连接 AF_FF1 -- 进位状态 --> AF_TriBuf1 AF_FF2 -- 零状态 --> AF_TriBuf1 AF_FF3 -- 符号状态 --> AF_TriBuf1 AF_FF4 -- 溢出状态 --> AF_TriBuf1 AF_FF5 -- 奇偶状态 --> AF_TriBuf1 end %% ALU内部连接 ALUControl -- 运算控制信号 --> AddSub ALUControl -- 逻辑控制信号 --> LogicUnit ALUControl -- 移位控制信号 --> ShiftUnit AddSub -- 算术结果和标志 --> ALUFlags LogicUnit -- 逻辑结果和标志 --> ALUFlags ShiftUnit -- 移位结果和标志 --> ALUFlags end subgraph Registers[寄存器组] direction TB subgraph PC[程序计数器 PC] direction TB PC_FF1[D触发器 // PC低8位] PC_FF2[D触发器 // PC高8位] PC_Adder[加法器 // PC+1] PC_MUX1[多路复用器 // PC输入选择] PC_TriBuf1[三态缓冲器 // PC输出] %% 程序计数器内部连接 PC_FF1 -- 低字节 --> PC_Adder PC_FF2 -- 高字节 --> PC_Adder PC_Adder -- 下一地址 --> PC_MUX1 PC_MUX1 -- 地址选择 --> PC_FF1 PC_MUX1 -- 地址选择 --> PC_FF2 PC_FF1 -- 输出低字节 --> PC_TriBuf1 PC_FF2 -- 输出高字节 --> PC_TriBuf1 end subgraph IR[指令寄存器 IR] direction TB IR_FF1[D触发器 // 操作码部分] IR_FF2[D触发器 // 地址部分] IR_TriBuf1[三态缓冲器 // 指令输出] IR_Decoder1[地址解码器 // 指令字段分离] %% 指令寄存器内部连接 IR_FF1 -- 操作码 --> IR_Decoder1 IR_FF2 -- 地址字段 --> IR_Decoder1 IR_Decoder1 -- 分离字段 --> IR_TriBuf1 end subgraph MAR[内存地址寄存器 MAR] direction TB MAR_FF1[D触发器 // 地址低8位] MAR_FF2[D触发器 // 地址高8位] MAR_TriBuf1[三态缓冲器 // 地址输出] MAR_MUX1[多路复用器 // 地址源选择] %% 内存地址寄存器内部连接 MAR_MUX1 -- 地址源选择 --> MAR_FF1 MAR_MUX1 -- 地址源选择 --> MAR_FF2 MAR_FF1 -- 输出低地址 --> MAR_TriBuf1 MAR_FF2 -- 输出高地址 --> MAR_TriBuf1 end subgraph MBR[内存缓冲寄存器 MBR] direction TB MBR_FF1[D触发器 // 数据输入锁存] MBR_FF2[D触发器 // 数据输出锁存] MBR_TriBuf1[三态缓冲器 // 数据输出] MBR_TriBuf2[三态缓冲器 // 数据输入] %% 内存缓冲寄存器内部连接 MBR_TriBuf2 -- 输入数据 --> MBR_FF1 MBR_FF1 -- 锁存数据 --> MBR_FF2 MBR_FF2 -- 输出数据 --> MBR_TriBuf1 end subgraph ACC[累加器 ACC] direction TB ACC_FF1[D触发器 // 累加值存储] ACC_TriBuf1[三态缓冲器 // 累加值输出] ACC_MUX1[多路复用器 // 输入源选择] %% 累加器内部连接 ACC_MUX1 -- 输入源选择 --> ACC_FF1 ACC_FF1 -- 存储数据 --> ACC_TriBuf1 end subgraph GPR1[通用寄存器 R0-R7] direction TB GPR_FF[8xD触发器 // 寄存器存储] GPR_MUX1[多路复用器 // 寄存器选择] GPR_Decoder1[地址解码器 // 寄存器地址解码] GPR_TriBuf1[三态缓冲器 // 寄存器输出] %% 通用寄存器内部连接 GPR_Decoder1 -- 寄存器选择 --> GPR_MUX1 GPR_MUX1 -- 选择寄存器 --> GPR_FF GPR_FF -- 寄存器数据 --> GPR_TriBuf1 end subgraph StatusReg[状态寄存器 Flags] direction TB SR_FF1[D触发器 // 中断使能] SR_FF2[D触发器 // 方向标志] SR_FF3[D触发器 // 系统模式] SR_TriBuf1[三态缓冲器 // 状态输出] SR_MUX1[多路复用器 // 状态输入选择] %% 状态寄存器内部连接 SR_MUX1 -- 状态输入选择 --> SR_FF1 SR_MUX1 -- 状态输入选择 --> SR_FF2 SR_MUX1 -- 状态输入选择 --> SR_FF3 SR_FF1 -- 中断状态 --> SR_TriBuf1 SR_FF2 -- 方向状态 --> SR_TriBuf1 SR_FF3 -- 模式状态 --> SR_TriBuf1 end %% 寄存器组内部连接 PC -- 指令地址 --> MAR IR -- 操作数地址 --> MAR MBR -- 指令数据 --> IR MBR -- 运算数据 --> ACC MBR -- 存储数据 --> GPR1 ACC -- 累加值 --> ALU GPR1 -- 寄存器值 --> ALU ALU -- 运算结果 --> ACC ALUFlags -- 状态标志 --> StatusReg end subgraph InternalBus[内部数据总线] direction LR subgraph DataBus[内部数据总线] direction TB DB_Line[8x三态缓冲器 // 数据线驱动] DB_MUX1[多路复用器 // 数据源选择] DB_Decoder1[地址解码器 // 目标选择] %% 数据总线内部连接 DB_MUX1 -- 数据源选择 --> DB_Line DB_Decoder1 -- 目标选择 --> DB_Line end subgraph AddressBus[内部地址总线] direction TB AB_Line[16x三态缓冲器 // 地址线驱动] AB_MUX1[多路复用器 // 地址源选择] AB_Decoder1[地址解码器 // 地址范围解码] %% 地址总线内部连接 AB_MUX1 -- 地址源选择 --> AB_Line AB_Decoder1 -- 地址解码 --> AB_Line end subgraph ControlBusInt[内部控制总线] direction TB CB_Line[12x三态缓冲器 // 控制线驱动] CB_Decoder1[地址解码器 // 控制信号路由] CB_FF1[D触发器 // 控制信号同步] %% 控制总线内部连接 CB_Decoder1 -- 信号路由 --> CB_Line CB_Line -- 控制信号 --> CB_FF1 end %% 内部总线连接 DataBus -- 数据传输 --> Registers DataBus -- 数据传输 --> ALU AddressBus -- 地址传输 --> Registers ControlBusInt -- 控制信号 --> CU ControlBusInt -- 控制信号 --> ALU ControlBusInt -- 控制信号 --> Registers end %% 核心内部主要连接 CU -- 控制信号: 指令执行控制 --> ALU CU -- 控制信号: 寄存器操作控制 --> Registers ALU -- 状态反馈: 运算状态标志 --> CU Registers -- 数据交换: 寄存器数据传输 --> InternalBus InternalBus -- 路由控制: 总线仲裁和路由 --> CU end subgraph CacheHierarchy[缓存层次] direction LR subgraph L1Cache[L1缓存] direction TB L1_SRAM[SRAM阵列 // 数据存储] L1_TagRAM[SRAM阵列 // 标签存储] L1_ValidBits[D触发器阵列 // 有效位] L1_DirtyBits[D触发器阵列 // 脏位] L1_Comparator[比较器 // 标签比较] L1_Decoder[地址解码器 // 组选择] L1_MUX[多路复用器 // 路选择] L1_TriBuf[三态缓冲器 // 数据输出] %% L1缓存内部连接 L1_Decoder -- 组选择信号 --> L1_SRAM L1_Decoder -- 标签索引 --> L1_TagRAM L1_TagRAM -- 标签数据 --> L1_Comparator L1_Comparator -- 命中判断 --> L1_MUX L1_MUX -- 路选择 --> L1_TriBuf L1_ValidBits -- 有效状态 --> L1_Comparator L1_DirtyBits -- 脏位状态 --> L1_MUX end subgraph L2Cache[L2缓存] direction TB L2_SRAM[SRAM阵列 // 数据存储] L2_TagRAM[SRAM阵列 // 标签存储] L2_ValidBits[D触发器阵列 // 有效位] L2_DirtyBits[D触发器阵列 // 脏位] L2_Comparator[比较器 // 标签比较] L2_Decoder[地址解码器 // 组选择] L2_MUX[多路复用器 // 路选择] L2_TriBuf[三态缓冲器 // 数据输出] %% L2缓存内部连接 L2_Decoder -- 组选择信号 --> L2_SRAM L2_Decoder -- 标签索引 --> L2_TagRAM L2_TagRAM -- 标签数据 --> L2_Comparator L2_Comparator -- 命中判断 --> L2_MUX L2_MUX -- 路选择 --> L2_TriBuf end subgraph L3Cache[L3缓存] direction TB L3_SRAM[SRAM阵列 // 数据存储] L3_TagRAM[SRAM阵列 // 标签存储] L3_ValidBits[D触发器阵列 // 有效位] L3_DirtyBits[D触发器阵列 // 脏位] L3_Comparator[比较器 // 标签比较] L3_Decoder[地址解码器 // 组选择] L3_MUX[多路复用器 // 路选择] L3_TriBuf[三态缓冲器 // 数据输出] %% L3缓存内部连接 L3_Decoder -- 组选择信号 --> L3_SRAM L3_Decoder -- 标签索引 --> L3_TagRAM L3_TagRAM -- 标签数据 --> L3_Comparator L3_Comparator -- 命中判断 --> L3_MUX L3_MUX -- 路选择 --> L3_TriBuf end subgraph CacheController[缓存控制器] direction TB CC_StateMachine[D触发器阵列 // 状态机] CC_AddressDecoder[地址解码器 // 地址解析] CC_Comparator[比较器 // 一致性检查] CC_MUX[多路复用器 // 缓存层级选择] CC_TriBuf[三态缓冲器 // 控制信号输出] %% 缓存控制器内部连接 CC_AddressDecoder -- 地址解析 --> CC_StateMachine CC_StateMachine -- 状态控制 --> CC_MUX CC_Comparator -- 一致性检查 --> CC_StateMachine CC_MUX -- 层级选择 --> CC_TriBuf end %% 缓存层次内部连接 CacheController -- 地址映射控制: 虚拟地址映射 --> L1_Decoder CacheController -- 地址映射控制: 物理地址映射 --> L2_Decoder CacheController -- 一致性协议: 缓存一致性控制 --> L3Cache L1Cache -- 缓存未命中: L1缺失数据请求 --> L2Cache L2Cache -- 缓存未命中: L2缺失数据请求 --> L3Cache L3Cache -- 内存访问: L3缺失内存请求 --> CacheController end subgraph MMU[内存管理单元 MMU] direction TB subgraph TLB[转址旁路缓存 TLB] direction TB TLB_CAM[CAM阵列 // 虚拟地址匹配] TLB_RAM[SRAM阵列 // 物理地址存储] TLB_ValidBits[D触发器阵列 // 有效位] TLB_Comparator[比较器 // 地址匹配] TLB_Decoder[地址解码器 // TLB索引] TLB_MUX[多路复用器 // 输出选择] %% TLB内部连接 TLB_CAM -- 虚拟地址匹配 --> TLB_Comparator TLB_Comparator -- 匹配结果 --> TLB_MUX TLB_RAM -- 物理地址 --> TLB_MUX TLB_ValidBits -- 有效位检查 --> TLB_Comparator TLB_Decoder -- TLB索引 --> TLB_CAM end subgraph PageTable[页表寄存器] direction TB PTR_FF1[D触发器 // 页表基址] PTR_FF2[D触发器 // 页表长度] PTR_TriBuf1[三态缓冲器 // 基址输出] PTR_Adder[加法器 // 页表项计算] %% 页表寄存器内部连接 PTR_FF1 -- 基址寄存器 --> PTR_Adder PTR_FF2 -- 长度限制 --> PTR_Adder PTR_Adder -- 页表项地址 --> PTR_TriBuf1 end subgraph SegmentationUnit[分段单元] direction TB SU_Adder[加法器 // 段基址+偏移量] SU_Comparator[比较器 // 段界限检查] SU_MUX1[多路复用器 // 段选择器] SU_FF1[D触发器 // 段寄存器缓存] %% 分段单元内部连接 SU_MUX1 -- 段选择 --> SU_FF1 SU_FF1 -- 段基址 --> SU_Adder SU_Adder -- 线性地址 --> SU_Comparator end subgraph PagingUnit[分页单元] direction TB PU_Shifter[移位器 // 页表索引提取] PU_Adder[加法器 // 多级页表遍历] PU_MUX1[多路复用器 // 页大小选择] PU_Comparator[比较器 // 权限检查] %% 分页单元内部连接 PU_Shifter -- 索引提取 --> PU_Adder PU_Adder -- 页表遍历 --> PU_Comparator PU_MUX1 -- 页大小选择 --> PU_Shifter end %% MMU内部连接 SegmentationUnit -- 线性地址生成: 段基址+偏移量 --> PagingUnit PagingUnit -- 物理地址转换: 页表遍历结果 --> TLB TLB -- 快速地址转换: TLB查找结果 --> MMU PageTable -- 页表信息: 页表基址和界限 --> PagingUnit end subgraph BusInterface[CPU总线接口] direction TB BI_AddressLatch[D触发器阵列 // 地址锁存] BI_DataLatch[D触发器阵列 // 数据锁存] BI_ControlLatch[D触发器阵列 // 控制信号锁存] BI_AddressDecoder[地址解码器 // 总线设备选择] BI_Arbiter[逻辑运算器阵列 // 总线仲裁] BI_TriBuf[三态缓冲器阵列 // 总线驱动] %% 总线接口内部连接 BI_AddressDecoder -- 设备选择 --> BI_Arbiter BI_Arbiter -- 仲裁结果 --> BI_ControlLatch BI_ControlLatch -- 控制信号 --> BI_TriBuf BI_AddressLatch -- 地址信号 --> BI_TriBuf BI_DataLatch -- 数据信号 --> BI_TriBuf end %% CPU内部主要连接 Core -- 处理请求: 指令和数据请求 --> CacheHierarchy CacheHierarchy -- 缓存数据: 缓存命中数据返回 --> Core Core -- 虚拟地址: 内存访问地址 --> MMU MMU -- 物理地址: 地址转换结果 --> BusInterface CacheHierarchy -- 内存访问: 缓存未命中请求 --> BusInterface BusInterface -- 总线事务: 外部总线通信 --> CPU end %% 继续其他部分的优化... %% === 主要系统间连接 === CPU -- 内存访问: 读写请求和数据交换 --> MemoryHierarchy CPU -- 控制信号: 系统控制和状态反馈 --> Chipset Chipset -- 数据通路: I/O数据交换 --> Peripherals Chipset -- 总线管理: 总线仲裁和控制 --> Buses MemoryHierarchy -- 存储服务: 数据存储和检索 --> Chipset Peripherals -- 外设数据: 输入输出数据流 --> Buses Buses -- 通信通道: 系统组件间数据传输 --> Computer end
解析生成
加载示例
渲染中...
当前位置: Root
显示深度:
⬅
+
-
↺
100%