处理器系列之寻址空间详解

一、什么叫寻址空间?
寻址空间一般指的是cpu对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(ram)中存放是有规律的 ,cpu在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了cpu的能力范围,cpu就无法找到数据了。 cpu最大能查找多大范围的地址叫做寻址能力 ,cpu的寻址能力以字节为单位。
通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。
计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。
intel公司早期的cpu产品的地址总线和地址寄存器的宽度为20位,即cpu的寻址能力为2^20=1024*1024字节=1024k字节=1m字节;286的地址总线和地址寄存器的宽度为24位,cpu的寻址能力为
2^24=1024*4*1024*4b=4*1024*4kb=16m;386及386以上的地址总线和地址寄存器的宽度为32位,cpu的寻址能力为2^32=4096m字节=4g字节。 也就是说,如果机器的cpu过早,即使有很大的内存也不能得到利用,而对于现在的pⅱ级的cpu,其寻址能力已远远超过目前的内存容量。
由此推出:地址总线为n位(n通常都是8的整数倍;也说n根数据总线)的cpu寻址范围是2的n次方字节,即2^n(b)。
二、16位、32位、64位通常指的是什么?
从cpu的发展史来看,从以前的8位到现在的64位,8位也就是cpu在一个时钟周期内可并行处理8位二进字符0或是1,那么16就以此类推是64位就64位二进制.
从数据计算上来讲理论上64位比32快一半。但因为电脑是软硬相配合才能发挥最佳性能的.所以操作系统也必须从32位的到64位的,而且系统的硬件驱动也必须是64位的.
在64cpu的计算机上要安装64位操作系统64位的硬件驱动,32位的硬件驱动是不能用的,只有这样才能发挥计算机的最佳性能.如果64cpu装32操作系统的话,那性能不会有明显的提升。
三、为什么是2的n次方,而不是其他数的n次方?
因为计算机是采用二进制计算的。 假设一台计算机,它只有1根地址线,请问它最多能对几个存储单元寻址?答案是:2个.因为在任何2进制计算机中,所有物理元件只有 0,1两种状态,对应这个例子,我们假设已经把这唯一的一根地址线与两个存储单元a和b连上了,那么究竟怎么确定何时读a何时读b?有一个办法,当地址线上的电压是高电压时我们读a,相反是低电压时,我们读b.如此一来,一根地址线的情况下,只能对2个存储单元进行寻址 依次类推,2根地址线时可以对4个存储单元进行寻址,对应的电压情况可以是:低低,低高,高低,高高;继续想下去,3根地址线就可以对8个存储单元进行寻址(3个1和3个0不同组合情况:111、110、100、000、101、100、001、011),4根就是16个,也就是说,当有n根地址线时,可以对2的n次方个存储单元进行寻址。
一根线是怎么连接到两个存储单元的?好像不同于一根电话线吧,他有两个线芯或才网线,有八个小线(线芯)?
四、什么是存储单元?
存储单元一般应具有存储数据和读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。
程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。
五、为什么计算机采用二进制?
(1)技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。
(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。
(3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。
(4)易于进行转换,二进制与十进制数易于互相转换。
(5)用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。
我们的宇宙诞生于137亿年前的一次大爆炸。在宇宙之外的一个宇宙中,有一个星系与银河系具有非常显著的相似之处,在这个星系的一条旋臂上,存在着一个恒星系统,这个系统中只有一颗恒星,这颗恒星也与我们的太阳非常相似,再将镜头放大,在这颗恒星周围存在着八大行星,其中第三颗行星与我们的地球非常相似,这颗行星上同样也存在着高等直立智慧生物,其中有一个生物和您非常相似,过着同样的生活,更重要的是,此时此刻,他与您一样,也正在阅读这篇文章正文第一段的最后一行。
在x86系统里面,其实有多个寻址空间(memory空间、io空间、pci的配置空间)类似于独立的多个并行的宇宙,虽然没有多宇宙的相似性,但是每个空间通过自己的指令,自己独立编制,是不同的空间,互不干涉。这在risc处理器的编址方式里面,是不涉及的,在risc处理器中,一般所有的外设,内存,寄存器都在统一的寻址空间。
io空间
通过in/ins、out/outs指令访问。
16位地址范围(0-0ffffh)。
对于x86架构来说,通过in/out指令访问。pc架构一共有65536个8bit的i/o端口,组成64ki/o地址空间,编号从0~0xffff。连续两个8bit的端口可以组成一个16bit的端口,连续4个组成一个32bit的端口。i/o地址空间和cpu的物理地址空间是两个不同的概念,例如i/o地址空间为64k,一个32bit的cpu物理地址空间是4g。
mmio占用cpu的物理地址空间,对它的访问可以使用cpu访问内存的指令进行。一个形象的比喻是把文件用mmap()后,可以像访问内存一样访问文件、同样,mmio是用访问内存一样的方式访问i/o资源,如设备上的内存。mmio不能被cache,原因以前很多帖子论述过,就不多说了(有特殊情况,如vga)。
port i/o和mmio的主要区别在于:
1)前者不占用cpu的物理地址空间,后者占有(这是对x86架构说的,一些架构,如ia64,port i/o占用物理地址空间)。
2)前者是顺序访问。也就是说在一条i/o指令完成前,下一条指令不会执行。例如通过port i/o对设备发起了操作,造成了设备寄存器状态变化,这个变化在下一条指令执行前生效。uncache的mmio通过uncahce memory的特性保证顺序性。
3)使用方式不同
由于port i/o有独立的64ki/o地址空间,但cpu的地址线只有一套,所以必须区分地址属于物理地址空间还是i/o地址空间。早期的cpu有一个m/i针脚来表示当前地址的类型。

2019年电子信息百强企业发布,都有哪些企业上榜?
工业自动化仪表工程施工及验收规范
ARRA微型无级衰减器的通用技术条件是什么
广东梅州将建设智慧灯杆3200根!
新能源汽车市场博弈持续加剧 揭开大运新能源行稳致远的秘籍
处理器系列之寻址空间详解
盘点关于物联网项目的六个优秀实践案例
如何优化程序的性能 9个小技巧可以借鉴
用于通用标准无线电链路的小型化RF芯片
微波开关矩阵的幅度和相位匹配特性及测量
RVVP与RVV哪个是电源线哪个是信号线,两者有什么区别
高通为何在收购NXP失败后股价大涨?
传感器将会朝哪个方向发展?
耦合和去耦有什么区别,耦合电容和去耦电容的作用分别是什么?
aigo高速足容固态硬盘P3000 游戏快人一步,工作瞬间响应
彻底搞懂MPO预端接光缆的定义及分类
传感器获工信部重点关注 系统推进智能制造工作
不同的金属材料要如何进行焊接
使用仪表放大器抑制压电传感器的共模耦合噪声电位
“中国精度”:终结电网移动作业“毫米”盲区