从零到一:手把手构建16K×32位ROM存储系统
最近在辅导几位同学做计算机组成原理的实验,发现不少人对“字扩展”这个概念理解得不够透彻,尤其是在面对“用4片4K×32位的ROM芯片,扩展成一个16K×32位的存储系统”这类具体任务时,常常感到无从下手。这其实是一个非常经典的存储系统设计问题,它不仅仅是完成一次课程作业,更是理解计算机底层如何组织和管理内存的绝佳实践。今天,我们就抛开枯燥的理论复述,直接进入实战,用最清晰的逻辑和可操作的步骤,把这个系统从头到尾搭出来。无论你是正在头疼实验报告的学生,还是对硬件设计感兴趣的爱好者,这篇文章都能给你带来实实在在的帮助。
1. 实验目标与核心概念拆解
在动手连接任何一根线之前,我们必须彻底搞清楚我们要做什么,以及为什么这么做。这个实验的核心目标很明确:利用四块容量较小的存储芯片(4K×32位),通过特定的连接方式,组合成一个容量更大的、对外表现为单一存储单元的系统(16K×32位)。这里涉及几个关键术语,我们先来逐一厘清。
4K×32位 是什么意思?这里的“4K”指的是存储单元的数量,1K = 1024,所以4K就是4096个存储位置。每个存储位置能存放的数据宽度是32位(也就是4个字节)。所以,一块这样的芯片,总共能存储 4096 × 32 bit 的数据。
我们的目标是 16K×32位,也就是16384个存储位置,每个位置仍是32位。显然,一块4K的芯片装不下16K的数据,我们需要多块芯片“拼”起来。这种“拼”容量的方式,在计算机组成原理中称为 “字扩展”(Word Extension),有时也叫容量扩展。它的本质是扩展地址空间,让CPU能够寻址到更多的存储位置,而每个位置的数据宽度(字长)保持不变(依然是32位)。
与字扩展相对的是“位扩展”,那是为了增加数据宽度,比如用8片1K×1位的芯片组成1K×8位的系统。我们这个实验不涉及位扩展,专注解决地址空间不够用的问题。
理解了这个目标,我们就能明确设计思路:我们需要让四块芯片“协同工作”,当CPU送来一个14位地址(因为2^14 = 16384,覆盖16K空间)时,系统能自动选中四块芯片中的一块,并从这块芯片的正确位置中读出32位数据。
提示:地址线的数量决定了可寻址的空间大小。n条地址线,能产生2^n个不同的地址编码,从而访问2^n个存储单元。
2. 系统蓝图:地址空间的划分与芯片角色分配
现在我们来规划这四块芯片如何“瓜分”总共16K的地址空间。最直观、最常用的方法是连续线性划分。我们把整个16K的地址范围(0x0000 到 0x3FFF)平均分成四段,每段4K,分别交给四块芯片管理。
我们可以用一张表来清晰地展示这个分配方案:
| 芯片编号 | 管理的地址范围 (十六进制) |
|---|

2万+

被折叠的 条评论
为什么被折叠?



