我刚刚开始汇编语言程序设计,并在第一次讲座中告诉我们关于intel 8080和intel 8085的第一场讲座,他说这些处理器有64k内存。
现在我想知道,我们如何找到与特定处理器的内存量,例如我有一个处理器1.8 Ghz,现在我怎么可以找出可用于此处理器的内存量。
我想问的是告诉我如何找出这个数量的内存的方法?我们怎么能发现这个处理器支持多少内存?
回答
这取决于CPU支持多少位(物理)寻址。地址位的数量通常是< =地址寄存器中的位数,例如,
8085/Z80 - 16 bit address registers - 16 bit addressing - 64 kB address space
68008 - 32 bit address registers - 20 bit addressing - 1 MB address space
68000 - 32 bit address registers - 24 bit addressing - 16 MB address space
68020 - 32 bit address registers - 32 bit addressing - 4 GB address space
请注意,许多64位CPU通常只支持40位地址空间,即1 TB。
通常处理器的设计使得单个整数寄存器可以存储任何内存位置的地址。因此,“最大内存量”由寄存器(或处理器)的位数决定。 32位等于4 GB。 64位等于RAM的16个exabytes。
取决于体系结构,但CPU将受到其有多少地址线的限制。对于旧的Pentium Pro 32位CPU,支持36条地址线,因此CPU可支持高达64GB。更新的CPU(例如i7-860是64位CPU)也仅支持36个物理地址,因此也被限制为64GB。物理地址空间的数量可以通过使用CPUID指令代码找到,其他CPU可能使用不同的技术或需要读取数据表。看起来像你学习的x86,所以在这种情况下CPUID就是你想要的,如果你的CPU支持的话。
你指的是'内存'虚拟内存还是物理内存?在虚拟内存的情况下,32位处理器的容量为4GB,但是当操作系统使用其中的一部分时,可能无法使用所有这些内存。还要注意CPU的PAE(物理地址扩展),以及操作系统是否正在运行PAE内核。这将为您安装和使用超过4GB的物理内存,但虚拟地址空间仍然为4GB。请看看:
http://en.wikipedia.org/wiki/Physical_Address_Extension
http://msdn.microsoft.com/en-us/library/aa366796(v=vs.85).aspx
嗯,这取决于某些变量。
例如,一个8位处理器的值可以达到255,这是通过取2到8的功率计算出来的,然后再减1。这个数字是255,CPU可以处理多少个字节,RAM不能超过这个数量。
现在,我们来一点点(没有双关意图)。一个16-it处理器的数值高达65,535,再次通过2到16的功率计算出来,然后减去1(我相信你现在已经看到了大局)。这意味着我们可以拥有65,535字节的RAM或65.535千字节。希望这开始有意义。
32位处理器的值高达4,294,967,295(这些数字变得相当大)。这是4,294,967,295字节,或者是4.294967295千兆字节的RAM。这项技术在90年代开始被大量使用,并且今天仍然是半流行的。但是,当然,我们都知道技术如何快速而经常地变化,所以是的,也有64位计算机,与32位技术一样好。这实际上是当今最常见的处理器类型。因此,他们可以支持18,446,744,073,709,551,615的价值。是的,这也是它可以容纳多少字节,这等于18.446744073709551615 EB字节。
而且,即使目前没有可以容纳这个数量的处理器,也有128位处理器。它们最多可以容纳340,282,366,920,938,463,463,374,607,431,768,211,455字节的数据,这也等于340.282366920938463463374607431768211455 ......这个......字节的一些度量,恰好比Yottabytes大,据我所知,没有任何单位的字节测量。但是,嘿,这只是告诉你一个128位处理器可以处理很多事情,而且我们可能在遥远的未来看到它们。人们说128位,64位,32位,16位或8位的原因是因为它比试图记住那些比它们每个代表的大数字要容易得多。
所以,我希望这有助于。我不确定8位是否正确,因为我知道NES有2千字节的RAM,它超过了255字节,但是,我知道其他所有内容都是正确的。如果不正确,你也可以代表你做一些研究;)。
虽然NES具有2 kB的板载内存,但是磁盘盒总共可以增加一兆字节的额外内存。常见的8位微处理器可以寻址高达64 kB的主存储器,而不需要像银行转换那样的技巧。 “16位”8086可以解决1MB的主内存问题,而32位iA处理器可以使用[PAE](http://en.wikipedia.org/wiki/Physical_Address_Extension)等技巧解决多达64 MB的问题。 – 2014-01-25 20:59:53
真的,所有这些加起来,一个非常可怜和误导性的答案。 – 2014-01-25 21:05:17
老实说,我不认为这是有误导性的。当然,处理器RAM支持种类取决于其他方面,但这基本上是一般事情的工作原理。 – 2014-01-26 23:30:36
- 1. 支持SSE的x86处理器上有多少个XMM寄存器可用?
- 2. 我该怎么处理这个AppID?
- 3. 我怎么看我的程序在吃多少内存?
- 4. 我怎么能确定我的节目了多少内存目前占据
- 5. 春天在什么XD支持在内存中处理Hadoop中
- 6. 支持多个文件上传处理
- 7. 台式机处理器是否支持弱排序内存?
- 8. 我怎么能扭转这个功能?
- 9. 我怎么能知道多少内存Eclipse插件使用(单独)
- 10. 如何处理这个:所选处理器不支持`qadd16 r1,r1,r0'
- 11. 多个数据存储操作 - 我们需要多少个持久性管理器参考?
- 12. 开发内核以支持多个CPU
- 13. 我怎样才能让这个点击持续发生?
- 14. 仪器说我有12个内存泄漏在这个,我怎么摆脱它们?
- 15. Python - 我怎么能简化这个?
- 16. 我怎么能翻译这个参考
- 17. 我怎么能通过这个信息?
- 18. 我怎么能这个数组
- 19. 我怎么能执行这个MySQL partitoning?
- 20. 怎样才能实现我自己的内存查看器QT
- 21. 我怎么能这个指针赋给我的迭代器类
- 22. Android浏览器支持多少HTML5?
- 23. 我怎么能实现GCC
- 24. 我怎么能实现这个奇怪的WPF TreeListDataGridView?
- 25. 我怎么能异或这两个向量的内容?
- 26. Logging dictConfig不支持多处理
- 27. 每个从机支持多少个并发客户机?
- 28. 我喜欢他们的方式设计/建筑,但我怎么实现这个
- 29. GWT对Java布局管理器有多少支持?
- 30. 我怎么能得到这个多维数组工作?
当然,即使CPU支持给定数量的内存,也不意味着其他硬件或操作系统可以支持它。例如。英特尔i7是一款64位CPU,但主板通常仅限于24GB。 – Richard 2010-03-20 10:18:24
有很多CPU具有超过32个物理地址位,但只有32位地址寄存器。英特尔的PAE允许在旧的32位处理器(如奔腾III等)上高达64 GB。 – hirschhornsalz 2011-05-05 08:23:19