关于存储器组织的有关学习理解~求教~
本帖最后由 兰陵月 于 2017-1-12 10:00 编辑来自《编码—隐匿在计算机硬件背后的语言》
第16章存储器组织
对书中有关存储器一个比特位到存储一个字节的电路构造半天无法理解其设计的做法,想向各位求教。
下面书中教材的讲解(省略了一些)
一、一个由一个反向器、两个与门和两个或非门构成的D型电平触发器(有一个数据输入端、时钟输入端和一个Q、Q反)可以保存一个比特位数据。
如下图:
书中改良后的电路图
这样实际构成了一个1比特位的锁存器
把8个这样的1比特位锁存器以下图方式连接,就构成了一个8比特位的锁存器。
下图是简化图
到这里,我都能够理解~
但是下面就难以理解了,我觉得为什么一定要通过一个8选1的选择器来输出一个比特位,为什么不直接通过一个1比特位的锁存器直接输出一个1比特位?
下面是已经最终完工的产品。
下图中红线圈内部分不是已经可以很好的表示一个比特位了吗?
为何还要在前面加一个3-8译码器,后面加一个8-1选择器来搞出一个比特位最终结果?
仅仅只是为了能够随意读写1个字节的每个比特位吗?
或者是为了后面好组合成16位、32位?
我卡在这里了,理解不下去了。。。。
最后一张图,请忽略~~标记错误了~ 不要卡住,继续向后看
后面使用这种方法构造出 8x1RAM
用两种不同的方法使用两个8x1RAM构造出8x2RAM和16x1RAM
使用前面那种方法也许也可以构造出8x2RAM和16x1RAM
但是这种方法应该最好,起码书上是怎么做的
有兴趣,你可以使用前面那种方法试试,能不能构造出8x2RAM和16x1RAM
^_^
我了个去,你们2个,为啥这么底层都懂……
话说我只有高中的电物理基础能看懂么?总之,与门电路,和非门电路是只闻其名,从来没看懂过……
{:10_245:}{:10_245:}{:10_245:}
对这方面想要稍微深入一点了解,大概需要点什么基础……{:10_258:} 我想了想,
使用前面那种方法应该构造不出 8x2RAM和16x1RAM
前面那种方法可以构造
1x8RAM,2x8RAM,3x8RAM,4x8RAM,5x8RAM,6x8RAM,7x8RAM,8x8RAM,9x8RAM......(后面还可以有)
1x16RAM,2x16RAM,3x16RAM,4x16RAM,5x16RAM,6x16RAM,7x16RAM,8x16RAM,9x16RAM......(后面还可以有)
1x32RAM,2x32RAM,3x32RAM,4x32RAM,5x32RAM,6x32RAM,7x32RAM,8x32RAM,9x32RAM......(后面还可以有)
还可以有很多,乘64,乘128........
这是我想了想,没有亲自构造过(什么叫“亲自”,难道真的要用继电器试试吗,我只是简单的在大脑中想了想^_^),不知对不对
不知道你基础怎么样,我就大概说说吧,那只是用来说明如何做出地址空间吧,你有注意到是同一条线接到8个锁存上面吗,没有在写操作端加译码器那就是一次就把8个锁存的状态都改成了1 或0,如果第一个是地址1,第二个是地址2....,那这时要求你把0写入地址6 ,你就只能加装译码器阿,让写操作端只有在第6个是通路,读取亦同。
这时你可以扩增每个地址所能存放的容量,先假设你要做出1024*8 bit 的ram,
那你需要10个地址线做出1024种可能,接到1024个1bit锁存,这时地址总数有1024个,但容量是1bit,若要写入数据到某某地址,可以先把数据输入改成你要写入的值,把地址配置成让某某地址的写操作端是通路,再把写操作端置1置0就完成了,这时你只要再并排多弄出7个这样的结构,不同之处是这另外7个的数据输入端是个别独立的,这样当你让某个地址是通路以写入时,就是一次写8个个别的数据进去,这样就完成1024 *8 bit 的ram。 你说从第一张图到第二张图很难理解,你有注意到第一张图有8个独立的数据输入吗,他只是先做每个空间的延伸,如果你要从第一张图演变成1024 *8 bit的ram,最终做出来的结果是一模一样的,有图的话比较好讲,但书上应该有,你先复制1023个这样的结构,若是并排的话,那一个数据输入段就接上并排的那1024个,那就是没有译码器的第二张图拉,差别只有从接8个到接1024个,你再往写操作端装上译码器就是完全一样的东西了阿,只是顺序不同而已。 人造人 发表于 2017-1-12 14:15
不要卡住,继续向后看
后面使用这种方法构造出 8x1RAM
用两种不同的方法使用两个8x1RAM构造出8x2RAM和16x ...
我就是听了你多次推荐这两本书~~所以买了一本新的,埋头苦读~~结果发现还是有不懂的地方,当然确实容易读懂~~{:5_99:}
zealstar 发表于 2017-1-12 14:26
我了个去,你们2个,为啥这么底层都懂……
话说我只有高中的电物理基础能看懂么?总之,与门电路,和非 ...
如果是看这本书,高中物理知识完全可以的,稍微有不知道的,百度一下就可以了~
我现在读这本书用的就是高中的物理知识,因为大学里我学的是应用数学,大学后完全没学过物理知识,我仍然是可以看懂的~
不过这本书应该是基础性的知识,让我们对计算机的运行能更多几分了解~
比如说为什么计算机是从0开始编码?为什么是8位一个字节?
比如那些个01010101是怎么在这些电路里来来去去的?
其实计算机里面根本就没有010101,计算机里只有有电没电,电压高电压低
等等之类的,这本书读了以后,在学习与计算机硬件有关的知识时会减少不少的疑惑。 人造人 发表于 2017-1-12 14:28
我想了想,
使用前面那种方法应该构造不出 8x2RAM和16x1RAM
前面那种方法可以构造
我还在理解中~~估计书本上之所以这么做,也是因为你说的原因,即从构造大规模存储器是否使用方便来设计的。 fc1735 发表于 2017-1-12 21:29
你说从第一张图到第二张图很难理解,你有注意到第一张图有8个独立的数据输入吗,他只是先做每个空间的延伸 ...
看了你两贴回复有点似是而非的懂了,我再开动大脑一下。。。。。。 fc1735 发表于 2017-1-12 21:20
不知道你基础怎么样,我就大概说说吧,那只是用来说明如何做出地址空间吧,你有注意到是同一条线接到8个锁 ...
我只用一个锁存器啊~我不把8个锁存器连接,我只用用一个锁存器输出一位啊,我仍然可以控制输出0或者1.
而且您此处说的地址6,是第6比特位吗?还是一个一个字节的0000:0006? fc1735 发表于 2017-1-12 21:20
不知道你基础怎么样,我就大概说说吧,那只是用来说明如何做出地址空间吧,你有注意到是同一条线接到8个锁 ...
数据存储是怎么存储的?
比如说10110110,这8个比特位(1个字节),在存的时候是瞬间同时存进去的,还是通过书本中的8X1RAM一个一个存进去的?? 本帖最后由 兰陵月 于 2017-1-15 10:08 编辑
fc1735 发表于 2017-1-12 21:20
不知道你基础怎么样,我就大概说说吧,那只是用来说明如何做出地址空间吧,你有注意到是同一条线接到8个锁 ...
以倒数第二张那个图为例,它可以保存多少个比特位?它只能保存1个比特位吗?
本帖最后由 兰陵月 于 2017-1-13 12:49 编辑
以倒数第二张那个图为例,就是下面这个图。
它可以保存多少个比特位?它只能保存1个比特位吗?
我是不是被汇编语言和DEBUG的学习搞混了?
我下面的理解是否错误?
数据是一个一个字节排列的
读取数据的时候是一个一个字节同时读取的,即同时取出来8个比特位?
正确的理解是不是应该这样:
其实计算机读取一个字节的时候,并不是同时读取8个比特位,而是一次读取一个比特。
只不过因为计算机的读取速度很快很快,所以我们并没有感觉到什么延迟,以为一次就是读取8个比特?
本帖最后由 兰陵月 于 2017-1-13 12:50 编辑
麻烦解释一下红线划定内容的意思?
如果要读取地址为101的数据,为什么必须先把地址为100的数据读出来?
难道我不能通过直接把地址输入端那里设置为101来读取吗?
本帖最后由 fc1735 于 2017-1-13 13:54 编辑
兰陵月 发表于 2017-1-13 09:18
我只用一个锁存器啊~我不把8个锁存器连接,我只用用一个锁存器输出一位啊,我仍然可以控制输出0或者1.
...
是只用一条数据输入端接到8个锁存上,如果没有在写操作端装译码器,就等于只有2种状态,不是2^8次,因为一次就是改8个,1111,1111或0000,0000 兰陵月 发表于 2017-1-13 12:30
数据存储是怎么存储的?
比如说10110110,这8个比特位(1个字节),在存的时候是瞬间同时存进去的,还 ...
把8个数据输入端置成1011,0110,调整下地址线输入配置选择要存入的地址,操作写端就一次把8个都存进去了。 兰陵月 发表于 2017-1-13 12:37
以倒数第二张那个图为例,就是下面这个图。
它可以保存多少个比特位?它只能保存1个比特位吗?
不,8位处理器一次读取一个字节
16位处理器一次就读取2个字节 本帖最后由 fc1735 于 2017-1-13 14:23 编辑
兰陵月 发表于 2017-1-13 12:37
以倒数第二张那个图为例,就是下面这个图。
它可以保存多少个比特位?它只能保存1个比特位吗?
可以随机存取或读取8个锁存的任一一个,总共可以存储8个bit。
你没有理解错误,存取和读取都是一次操作特定位数,不是只操作一个比特位。
但是他现在的这张图还只能一次存取一个比特位,就像上面说的,只有高电压低电压两种状态,他只有一条数据输入端,只能做出两种状态,我们虽可以透过地址线任意选择要往其中的哪一个写入,但是要这样操作8次,才完成存储1个字节,但现实中不是这样的,我们要让一个地址一次存取几位,就要有几条数据输入,就像你说不懂从第一种图变到第二种图,第一种图已经可以一次性的写入8个比特位,只是还不具备地址空间,第二种图是做出地址空间,但还没有做每个空间上的延伸。
你可以想像倒数第二张图是8个叠在一起,地址线和写操作端都只往底下的7个直接接上,但数据输入端是个别独立的8个,数据读取也是个别独立的8个,这样你调整完地址线输入准备往一个地址写入时,从上到下叠起来的8个这个结构的这个地址都被写入了,就好像每个地址有这样的容量。