回ChristopherWu

来源:互联网 发布:会计核算软件说明书 编辑:程序博客网 时间:2024/05/01 16:38

 硬件小问题“答疑”
http://blog.csdn.net/christopherwu/article/details/36360671

 

 

 

我觉得楼主的结果太片面了,不够深入
大学这些相关课程,比如计算机结构原理或计算机组成原理,写的都是整个计算机世界的普遍原理,并不是针对某个具体的体系结构,比如intel x86系列cpu
像这样的话,这些课程的书就很难写,总写得高大上,刚入门的学生很难看懂的。
我的学习过程是先学某一个具体的体系 ,比如intel x86cpu,这个机子随手可得,学习x86计算机组成原理后,再回头看这些书的话,会觉得这些书字字都经典,不可孤立理解
如果让我一上来看这些文字,简单是天书
所以国外相关书总是一上来就声明针对某个体系,比如针对x86cpu 或 mips cpu。

国内大学计算机专业教材书的致命弱点
    .不适合自学  书中有断节,总写结论,不写原因,不写为什么要这样,不写过程
    .泛泛而谈    组成和原理总是谈普遍,除了背书,很难会与写书的人有共鸣
    .你抄我我抄你,一个错,全跟着错。
总结,看国内计算机书,要么看国内顶尖大学教授写的,比如严老师的数据结构之类的,要么看国内高手写的,比如罗云彬的win32编程之类的,要么看国外的书吧

声明,以上仅适用于x86个人计算机,其它体系计算机我没见过没摸过没研究过。


> 1、对内存编址的时候,是每个位都编号还是只对每个字节编号?若是后者,那意味着每个字节是被当做整体使用的,即字节就是最小存储单位不可再分。若是前者,那么会出现这么一种情况,一个字节的前四位

存储一些信息,后四位存储其他信息而互不相关,可以分别调用。
主存各存储单元的空间位置是由单元地址号来表示的,而地址总线是用来指出存储单元地址号的,根据该地址可读出或写入一个存储字。
计算机系统既可按字寻址,也可按字节寻址。

-----微型计算机(即个人计算机)的内存肯定是按字节进行编址,大中小型机没见过,也不懂。
     x86 cpu的地址线上不仅用来指出内存单元地址号,还可以指出i/o端口地址号
     x86 cpu数据线目前最大已达到64位(64bit cpu),所以x86 cpu可按四字 或 双字 或字  或字节寻址
    

> 3、内存如何寻址,或者(CPU)如何在内存条中找到需要的地址?
当要读取内存中的信息字时,CPU先将地址送至内存,内存再把该地址单元的信息读出。
详细如下:
CPU先将该信息字的地址送至MAR(放地址信息的 存储器地址寄存器Memory address register,在cpu上),MAR通过地址总线把地址送至内存,发出读命令;
内存接收到读命令,便将单元信息读出至MDR(放数据的存储器数据寄存器Memory Data register,在cpu上)

以上就是我的理解。若有错漏,还望各位不吝指教。

---- 现代cpu都集成MMU内存管理单元,教材上所谓的MAR就是内存管理单元中的专用寄存器
     内存上除了用来存储数据的存储单元外,也有控制单元,MDR就是其控制单元中的专用寄存器
     现在内存控制器都集成到了北桥上

     x86 cpu在地址线输出的就是地址信号,各个i/o控制器和内存都可以接收到这个信号,收到这个地址信号后,它们的控制电路就会比较,是自己的就把自己与总线相关,不是自己的地址就把通过电子开关把自己与总线脱机。

     其实我都不知道楼主这一问想问啥?

     (CPU)如何在内存条中找到需要的地址
     --这个问题有错,首先cpu不需要在内存条中找自己需要的地址,cpu只负责给出地址,如何在内存条中找到地址所对应的内存存储单元那是内存控制器的事

     内存如何寻址
     --这个就是典型的高大上。
       内存如何寻址,你是问内存的各种寻址方式呢?还是问如何寻找内存中的一个操作数?
       看楼主上下文,就是问如何在内存中找到特定地址对应的存储单元
       cpu在地址总线上给出的一定是物理地址,内存控制器发现是针对内存的地址,不是针对i/o设备的端口地址后,由内存控制器对该地址进行分析,找出该地址在哪个内存条的哪个位置
       你要问我再详细的,不好意思,我不懂,应该是商业机密吧,至少intel和amd的内存控制器具体实现是不同的,
       你就不要钻牛角尖的,别死抠了。这里就是一个黑盒子

> 2、内存的地址信息存放在哪里?就像对硬盘编址一样,总要腾出一部分空间专门记录硬盘的地址管理信息,即元数据。
参见问题3,如果确实像我理解的那样子,内存中没有专门存放所有地址的地方,每次要访问哪个地址,由地址线来二进制地址通过电路选择器来确定。
硬盘要腾出一部分空间专门记录硬盘的地址管理信息,是因为硬盘寻址的原理与RAM不一样。RAM直接就可以这样通过电路选择读出内容,而硬盘需要磁头定位,磁盘调度还有好多算法。

====

 内存的地址信息存放在哪里?
 ---- 内存芯片厂家的商业机密,你知道时可以告诉我下

 硬盘要腾出一部分空间专门记录硬盘的地址管理信息,是因为硬盘寻址的原理与RAM不一样。
 ---- 这个说法我也是第一次知道,我所知道的想要硬盘上的数据,用cpu的i/o指令对硬盘的i/o端口寄存器进行操作即可
      这个对外接口,可以指定要哪个柱面,哪个磁头,哪个扇区的数据
      硬盘内部肯定有专用电路,把这种对外接口转换成硬盘各个盘片的具体位置数据,但这个属于硬盘厂家的商业机密吧

 

纵观全文,楼主偏向硬件方面。这些全属于厂家硬件商业机密,对外公布的也只会是接口,内部具体实现肯定不会对外公布的,别瞎想了。

 

0 0
原创粉丝点击