❶ 虚拟存储器技术主要用于解决什么问题简述虚拟存储器的基本工作原理。
虚拟存储器技术主要解决电脑内存不够的问题,电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。
为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。
工作原理
1、中央处理器访问主存的逻辑地址分解成组号a和组内地址b,并对组号a进行地址变换,即将逻辑组号a作为索引,查地址变换表,以确定该组信息是否存放在主存内。
2、如该组号已在主存内,则转而执行④;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有,便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。
3、从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号a和逻辑组号a登录在地址变换表中。
4、从地址变换表读出与逻辑组号a对应的物理组号a。
5、从物理组号a和组内字节地址b得到物理地址。
6、根据物理地址从主存中存取必要的信息。
(1)实模拟存储器寻址过程扩展阅读:
相关概念
1、实地址与虚地址
用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间;而计算机物理内存的访问地址则称为实地址或物理地址,其对应的存储空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为程序的再定位。
2、虚拟内存的访问过程
虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。
每次访存时,首先判断该虚地址所对应的部分是否在实存中:如果是,则进行地址转换并用实地址访问主存;否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。
3、异构体系
从虚存的概念可以看出,主存-辅存的访问机制与cache-主存的访问机制是类似的。这是由cache存储器、主存和辅存构成的三级存储体系中的两个层次。cache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与管理,以便各级存储器能够组成有机的三级存储体系。
❷ 存储器寻址方式
1. MOV AX, ES:[1000H]源操作数的寻址方式是? 直接寻址
2. MOV AX, BAH[DI]源操作数的寻址方式是? 寄存器相对寻址
3. MOV AX, COUNT[BX]源操作数的寻址方式是? 寄存器相对寻址
4. MOV AX, COUNT[AX]源操作数的寻址方式是?
MOV AX, COUNT[BX]寄存器相对寻址,MOV AX, COUNT[AX]是错的
5. MOV [AX], COUNT[BX][DI]源操作数的寻址方式是? 相对基址变址寻址
6. MOV [BX], COUNT[BX][DI]源操作数的寻址方式是? 相对基址变址寻址
7. MOV AX, COUNT[BX][BP]源操作数的寻址方式是? 错的
8. MOV AX, COUNT[BX][SI]源操作数的寻址方式是?相对基址变址寻址
❸ 试说明实模式下存储器如何寻址
8086/8088的cpu中ALU的宽度只有16位,也就是说直接加以运算的指针长度为16位,最大寻址范围为2的16次方即64k! 而当时intel在8086/8088中决定采用1M的内存空间,就决定了地址总线为20位(2的20次方为1M)
http://topic.csdn.net/t/20030824/14/2182480.html
自己去看吧
❹ cpu是如何在内存中寻址的
各种内存概念
这里需要明确的是,我们讨论的不同内存的概念是建立在寻址空间上的。
IBM推出的第一台PC机采用的CPU是8088芯片,它只有20根地址线,也就是说,它的地址空间是1MB。
PC机的设计师将1MB中的低端640KB用作RAM,供DOS及应用程序使用,高端的384KB则保留给ROM、视频适配卡等系统使用。从此,这个界限便被确定了下来并且沿用至今。低端的640KB就被称为常规内存即PC机的基本RAM区。保留内存中的低128KB是显示缓冲区,高64KB是系统 BIOS(基本输入/输出系统)空间,其余192KB空间留用。从对应的物理存储器来看,基本内存区只使用了512KB芯片,占用0000至80000这 512KB地址。显示内存区虽有128KB空间,但对单色显示器(MDA卡)只需4KB就足够了,因此只安装4KB的物理存储器芯片,占用了B0000至 B10000这4KB的空间,如果使用彩色显示器(CGA卡)需要安装16KB的物理存储器,占用B8000至BC000这16KB的空间,可见实际使用的地址范围都小于允许使用的地址空间。
在当时(1980年末至1981年初)这么“大”容量的内存对PC机使用者来说似乎已经足够了,但是随着程序的不断增大,图象和声音的不断丰富,以及能访问更大内存空间的新型CPU相继出现,最初的PC机和MS-DOS设计的局限性变得越来越明显。
●1.什么是扩充内存?
到1984年,即286被普遍接受不久,人们越来越认识到640KB的限制已成为大型程序的障碍,这时,Intel和Lotus,这两家硬、软件的杰出代表,联手制定了一个由硬件和软件相结合的方案,此方法使所有PC机存取640KB以上RAM成为可能。而Microsoft刚推出Windows不久,对内存空间的要求也很高,因此它也及时加入了该行列。
在1985年初,Lotus、Intel和Microsoft三家共同定义了LIM-EMS,即扩充内存规范,通常称EMS为扩充内存。当时,EMS需要一个安装在I/O槽口的内存扩充卡和一个称为EMS的扩充内存管理程序方可使用。但是I/O插槽的地址线只有24位(ISA总线),这对于386以上档次的32位机是不能适应的。所以,现在已很少使用内存扩充卡。现在微机中的扩充内存通常是用软件如DOS中的EMM386把扩展内存模拟或扩充内存来使用。所以,扩充内存和扩展内存的区别并不在于其物理存储器的位置,而在于使用什么方法来读写它。下面将作进一步介绍。
前面已经说过扩充存储器也可以由扩展存储器模拟转换而成。EMS的原理和XMS不同,它采用了页帧方式。页帧是在1MB空间中指定一块64KB空间(通常在保留内存区内,但其物理存储器来自扩展存储器),分为4页,每页16KB。EMS存储器也按16KB分页,每次可交换4页内容,以此方式可访问全部 EMS存储器。符合EMS的驱动程序很多,常用的有EMM386.EXE、QEMM、TurboEMS、386MAX等。DOS和Windows中都提供了EMM386.EXE。
●2.什么是扩展内存?
我们知道,286有24位地址线,它可寻址16MB的地址空间,而386有32位地址线,它可寻址高达4GB的地址空间,为了区别起见,我们把1MB以上的地址空间称为扩展内存XMS(eXtend memory)。
在386以上档次的微机中,有两种存储器工作方式,一种称为实地址方式或实方式,另一种称为保护方式。在实方式下,物理地址仍使用20位,所以最大寻址空间为1MB,以便与8086兼容。保护方式采用32位物理地址,寻址范围可达4GB。DOS系统在实方式下工作,它管理的内存空间仍为1MB,因此它不能直接使用扩展存储器。为此,Lotus、Intel、AST及Microsoft公司建立了MS-DOS下扩展内存的使用标准,即扩展内存规范XMS。我们常在Config.sys文件中看到的Himem.sys就是管理扩展内存的驱动程序。
扩展内存管理规范的出现迟于扩充内存管理规范。
●3.什么是高端内存区?
在实方式下,内存单元的地址可记为:
段地址:段内偏移
通常用十六进制写为XXXX:XXXX。实际的物理地址由段地址左移4位再和段内偏移相加而成。若地址各位均为1时,即为FFFF:FFFF。其实际物理地址为:FFF0+FFFF=10FFEF,约为1088KB(少16字节),这已超过1MB范围进入扩展内存了。这个进入扩展内存的区域约为64KB,是1MB以上空间的第一个64KB。我们把它称为高端内存区HMA(High Memory Area)。HMA的物理存储器是由扩展存储器取得的。因此要使用HMA,必须要有物理的扩展存储器存在。此外HMA的建立和使用还需要XMS驱动程序 HIMEM.SYS的支持,因此只有装入了HIMEM.SYS之后才能使用HMA。
●4.什么是上位内存?
为了解释上位内存的概念,我们还得回过头看看保留内存区。保留内存区是指640KB~1024KB(共384KB)区域。这部分区域在PC诞生之初就明确是保留给系统使用的,用户程序无法插足。但这部分空间并没有充分使用,因此大家都想对剩余的部分打主意,分一块地址空间(注意:是地址空间,而不是物理存储器)来使用。于是就得到了又一块内存区域UMB。
UMB(Upper Memory Blocks)称为上位内存或上位内存块。它是由挤占保留内存中剩余未用的空间而产生的,它的物理存储器仍然取自物理的扩展存储器,它的管理驱动程序是EMS驱动程序。
●5.什么是SHADOW(影子)内存?
对于细心的读者,可能还会发现一个问题:即是对于装有1MB或1MB以上物理存储器的机器,其640KB~1024KB这部分物理存储器如何使用的问题。由于这部分地址空间已分配为系统使用,所以不能再重复使用。为了利用这部分物理存储器,在某些386系统中,提供了一个重定位功能,即把这部分物理存储器的地址重定位为1024KB~1408KB。这样,这部分物理存储器就变成了扩展存储器,当然可以使用了。但这种重定位功能在当今高档机器中不再使用,而把这部分物理存储器保留作为Shadow存储器。Shadow存储器可以占据的地址空间与对应的ROM是相同的。Shadow由RAM组成,其速度大大高于ROM。当把ROM中的内容(各种BIOS程序)装入相同地址的Shadow RAM中,就可以从RAM中访问BIOS,而不必再访问ROM。这样将大大提高系统性能。因此在设置CMOS参数时,应将相应的Shadow区设为允许使用(Enabled)。
●6、什么是奇/偶校验?
奇/偶校验(ECC)是数据传送时采用的一种校正数据错误的一种方式,分为奇校验和偶校验两种。
如果是采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是 “0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。
同理偶校验的过程和奇校验的过程一样,只是检测数据中“1”的个数为偶数。
●1.什么是CL延迟?
CL反应时间是衡定内存的另一个标志。CL是CAS Latency的缩写,指的是内存存取数据所需的延迟时间,简单的说,就是内存接到CPU的指令后的反应速度。一般的参数值是2和3两种。数字越小,代表反应所需的时间越短。在早期的PC133内存标准中,这个数值规定为3,而在Intel重新制订的新规范中,强制要求CL的反应时间必须为2,这样在一定程度上,对于内存厂商的芯片及PCB的组装工艺要求相对较高,同时也保证了更优秀的品质。因此在选购品牌内存时,这是一个不可不察的因素。
还有另的诠释:内存延迟基本上可以解释成是系统进入数据进行存取操作就绪状态前等待内存响应的时间。
打个形象的比喻,就像你在餐馆里用餐的过程一样。你首先要点菜,然后就等待服务员给你上菜。同样的道理,内存延迟时间设置的越短,电脑从内存中读取数据的速度也就越快,进而电脑其他的性能也就越高。这条规则双双适用于基于英特尔以及AMD处理器的系统中。由于没有比2-2-2-5更低的延迟,因此国际内存标准组织认为以现在的动态内存技术还无法实现0或者1的延迟。
通常情况下,我们用4个连着的阿拉伯数字来表示一个内存延迟,例如2-2-2-5。其中,第一个数字最为重要,它表示的是CAS Latency,也就是内存存取数据所需的延迟时间。第二个数字表示的是RAS-CAS延迟,接下来的两个数字分别表示的是RAS预充电时间和Act- to-Precharge延迟。而第四个数字一般而言是它们中间最大的一个。
总结
经过上面分析,内存储器的划分可归纳如下:
●基本内存 占据0~640KB地址空间。
●保留内存 占据640KB~1024KB地址空间。分配给显示缓冲存储器、各适配卡上的ROM和系统ROM BIOS,剩余空间可作上位内存UMB。UMB的物理存储器取自物理扩展存储器。此范围的物理RAM可作为Shadow RAM使用。
●上位内存(UMB) 利用保留内存中未分配使用的地址空间建立,其物理存储器由物理扩展存储器取得。UMB由EMS管理,其大小可由EMS驱动程序设定。
●高端内存(HMA) 扩展内存中的第一个64KB区域(1024KB~1088KB)。由HIMEM.SYS建立和管理。
●XMS内存 符合XMS规范管理的扩展内存区。其驱动程序为HIMEM.SYS。
●EMS内存 符合EMS规范管理的扩充内存区。其驱动程序为EMM386.EXE等。
内存:随机存储器(RAM),主要存储正在运行的程序和要处理的数据。
补充说一下:
内存的分区就像体育场馆的座位,基本内存(64K以下)为比赛场地,必须有的。
保留内存:为运动员和教练员席,也是必需的。
以上两项加起来,为1024KB,也就是0,1兆。
以后的内存都为体育馆的观众席。观众席越多,体育馆赚的钱越多。但体育馆的设施和管理能力是有限的,操作系统相当体育馆的管理者,只能管理3.5G的内存,1G=1024兆。win7可多管一些,32位的操作系统(xp,win7)都是3.5G。64位的多一些。
所以,内存并不是插得越多越好。而是要匹配,获得最佳性价比才是最好的。
还有虚拟内存的问题,相当于内存的周转库房,一般由系统自动制定,了解即可。如果想学dos的话,可使用EMM386管理,具体的去找DOS教材,不是简介的那种,是命令详解的那种。上面都有。
❺ S7-200PLC存储器寻址方式有哪几种
S7-200PLC根据存储器的编程元件,把数据存储在不同的存储单元,通过每个单元的地址 进行数据访问,访问数据的过程称为“寻址”,根据访问数据存取的方式不同.可划分为直接寻址和间接寻址。
1.直接寻址
直接寻址就是明确存储器的区域、长度和位置,直接使用存储器编程元件的名称和地址进行数据交换,使用户程序直接存取这些数据。直接寻址包括位寻址、字节寻址、字寻址、双字寻址等方式。
(1)位寻址方式
位(bit)寻址方式用来表示“开关量或逻辑量”的工作过程。进行位寻址时,要指定存储器 编程元件的名称、字节地址和位地址,并把该位看成是一个独立的元件。
(2)字节、字、双字寻址方式
除了按位寻址方式外,还可按数据存储区域(I、Q、M、V、L、 S、SM等)的字节、字和双字的地址格式存取数据,进行字节、字、双字寻址方式时,要指定存储区域标识符、数据长度和起始地址。
2.间接寻址
间接寻址是使用指针的方式来访问存储器中的数据,而不是直接使用编程元件的地址编号 来访问存储器中的数据。
❻ 计算机组成原理——虚拟存储器
(1)程序员在比实际主存大得多的逻辑地址空间中编写程序
(2)程序执行时,把当前需要的程序段和数据块掉入主存,其他暂不使用的放在磁盘上
(3)执行指令时,通过硬件将逻辑地址转化为物理地址。虚拟地址高位为虚页号,低位为页内偏移地址
(4)当程序发生数据访问或程序访问失效(缺页时),由操作系统把信息从磁盘调入主存中
(1)基本思想:
内存被分成固定长度且长度较小的存储块(页框,实页,物理页)
每个进程也被划分为固定长度的程序块(页,虚页,逻辑页)
通过页表,实现逻辑地址想物理地址的转化
(2)逻辑地址
程序中指令所使用的地址(进程所在地址空间)
(3)物理地址
存放指令或数据的实际内存地址
(1)与“cache-主存”层次相比,页大小远比cache的行大小要大(windows中的页位4k)
(2)采用全相联映射方式:磁盘中的任意一个页能用射到内存中的任意一个页
因为缺页导致中断时,操作系统从磁盘拿数据通常要耗费几百万个时钟周期。增大页大小,可以减少缺页中断
(3)为什么让软件处理“缺页”
因为访问磁盘需要好粉几百万个时钟周期,硬件即使能立刻把地址打给磁盘,磁盘也不能立即响应
(4)为什么地址转换用硬件实现
硬件实现地址转换可以加快指令的执行速度
(5)为什么页写会策略采用write back
避免频繁的慢速磁盘访问
页表的首地址放在基址寄存器。采用基址寻址方式
每个页表项前面有一个虚页号:从0开始递增的序号。页表项又分为几个结构:
(1)装入位:该页是否在内存中
(2)修改位:该也在内存中是否被修改
(3)替换控制位:用于clock算法
(4)其他
(5)实页号(8进制)
(1)一次磁盘引用需要访问几次主存?2次,一次查页表,一次查物理地址。于是,把经常查的页表放到cache中。这种在cache页表项组成的页表称为TLB(Translation Lookside Buffer)
(2)TLB的页表结构:tag + 主存中的页表项
当采用全相连映射时,tag为页表项前面的虚页号。需要把tag和虚页号一一比较
当采用组相联映射时,tag被分为tag+index,虚页号的高位为tag,虚页号的低位为index,做组内索引(属于组内第几行)
1.段式存储是根据程序逻辑,给程序分段。使得每段大小不同。这种虚拟地址划分方法适合程序设计
2.段式存储的虚拟地址由段号和段内偏移地址组成。段式虚拟存储器到物理地址的映射通过段表实现
3.段式虚拟存储会造成空页
1.段页式虚拟存储,先把程序按照逻辑分成段,再把每段分成固定大小的页。
2.程序对主存的调入调出是按照页面进行的;但他有可以根据段实现共享和保护
3.缺点是段页式虚拟地址转换成物理地址需要查询2个表:段表和页表。段表找到相应页表的位置,页表找到想也页的位置
4.段页式细腻地址的结构可以为以下形式:
程序地址: 用户号(进程pid) | 段号 | 页号 | 页内偏移地址
(1)某计算机的cache块工16块,采用二路组相联映射方式,每个主存块大小为32字节,按照字节编制。则主存129号单元的主存块硬装如刀cache的组号是:(C)A、0 B、2 C、4 D、6
解:二路组相联,所以每组2块,共有16/2=8组,所以组号占3位。
每块32字节,所以块内地址占5位。
129转化为二进制:1000 0001:前3位为组号,100:=4
(2)假设用若干个2K4位的芯片组成一个8K8位的存储器,则地址0B1FH所在芯片的最小地址为:
解:用2片组成一行,共4行,所以片选地址占2位。片内地址有2k=211,所以占11位
0B1FH:000|0 1|011 0001 1111 这三段为前缀,片选地址,片内地址。
该片芯片的最小地址是片内地址全0:000|0 1|000 0000 0000 = 0800H
(3)某计算机的主存地址空间大小为256MB,按字节编址,指令cache和数据cache分离,均有8个cache行,每行大小为64B,数据cache采用直接映射方式,现有两个程序A,B对数组int a[256][256]进行遍历,程序A按行遍历,程序B按列遍历。假定int类型数据用32位补码表示,数组a按行优先方式存储,其地址为320(十进制)。
问:(1) 若不考虑cache一致性维护和替换算法所需的控制位,则数据cache的总容量占多少?
(2) 数组元素a[0][31]和a[1][1]各自所在主存块对应的cache行号分别为多少(cache从0行开始)?
(3)程序A和B的数据访问命中率各自为多少?哪个程序的执行时间更短?
解:(1) 因为cache的总容量是cache每行的数据存储大小+tag位+数据是否有效位+其他一致性控制位。
主存地址空间256MB,占28位。直接映射方式,8行,行号占3位。每行64B,所以块内地址占6位,因此,tag占28-3-6=19位
每行有一个数据有效位。因此,cache共(19+1+648)8 = 532字节
(2) 因为int类型占32位,所以一个int占4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。
块内地址占6位,直接映射下行号占3位,因此444 = 110 | 111100,所以行号为6
1348 = 10 | 101 | 000100,所以行号为5
(3) 因为1行cache占64B,每个int数占4B,所以一行有16个数。第一个数会因cache缺失而不命中,然后调入cache。,使得后面的15个int访问全部命中。所以命中率为1516 对于程序B,每次调入16个数,小于数组每行的128个元素,因此每次都不会命中,命中率为0
❼ 存储器寻址方式有哪些立即数寻址和寄存器寻址是吗
立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,位寻址,基址加变址寄存器间接寻址,相对寻址,一共7种
❽ 什么是存储器寻址
存储器寻址是寄存器与存储器间的寻址方式。使用存储器寻址的指令,其操作数通常存放在代码段之外的存储区,如数据段、堆栈段和附加段。指令中,通常给出的是存储单元地址或产生存储单元地址的有关信息。执行指令时,需要首先计算出数据存放的有效地址,接着计算出其在存储器中的物理地址,然后访问存储器,读取数据,再执行指令规定的基本操作。
❾ 存储器寻址方式有哪些
存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址