计算机存储概念(程序员对内存的抽象仅仅是寻址)

当代计算机的核心是主存,与CPU打交道都要通过主存(Memory被用来专指内存,实际上很多英文缩写中各种不同类型的存储器也有m)

CPU和外部都要通过内存进行交互,GPU则通过显存

Cache(高速缓存)与内存的交互属于硬件工程师,对软件工程师透明;而主存和辅存之间的交互由操作系统实现。

计算机硬盘(分为固态硬盘SSD和机械硬盘HDD,Hard Disk Drive)和磁盘都属于辅存,机械硬盘也属于磁盘,HDD通过磁头,扇区运行(OS课上讲)

存储器存储0/1物理方式分类:磁性介质:磁盘(外存),HDD(外存)

                                半导体晶体管:SSD(外存),内存,Cache

RAM就是数组:存取所有单元速度一样,通过晶体管实现,都属于易失性存储器,分为Static RAM和Dynamic RAM,正常开机状态下,DRAM中的电荷会逐渐泄露,读取操作也会影响电荷,需要随时刷新保证信息不丢失;SRAM就很稳定,只要电脑不断电,数据就不会丢,当然,断电也废。

内存(DRAM),Cache(SRAM),SSD(新型架构,未知),HDD(DAM:direct access memory介于随机存取和顺序存储之间,先随机存取到固定区域然后顺序存储,磁盘头转动,扇区磁道啥的)

ROM:readonly memory只读存储器,与之相对的是read/write memory,不是RAM....(bios写在rom里)ROM初始的概念随着rom发展逐渐消失,毕竟SSD也是ROM了

断电后数据消失:内存,cache

断电后数据还在:外存

MDR,MAR:CPU和内存交互的接口

 双端口RAM和多体存储器PPT开头

多核CPU就是多个CPU那堆东西。。。memory是共享的,多个CPU同时访问主存会发生数据读写冲突。。。

存储思考:

操作系统程序位于辅存中,需要执行主板bios指令,将os程序调入内存然后执行。

辅存中的东西都需要调入内存才能被CPU执行,调入过程由操作系统控制,通过IO总线。

上面两行的本质:新程序的执行只能由原始程序调用执行!

存取周期=存取时间+恢复时间”是不仅适用于DRAM也适用于硬盘,适用于一切存储器

存取周期=存储器数据传输周期=两次访问使用存储器时间间隔

地址总线背后的抽象:DRAM的具体实现:以下机理

地址总线背后的抽象:存储元--》存储单元--》存储模块(体)--》存储器

(DRAM既需要破坏性读出后重写,也需要刷新;刷新就是再写一遍,占用一个存取周期;刷新对程序员是透明的,定期刷新仅仅是存储器内的硬件支持功能。)

(DRAM的地址复用技术:使用后可以让地址总线宽度减半,其实本质=行地址,列地址的概念,即存储矩阵,每次只传高一半位或低一半位,通过两次传送完整地址,相当于地址总线宽度减半)

低位交叉编址多体存储器:为了解决“存取周期=存取时间+恢复时间”中的恢复时间而提出的读写存储器的流水线技术。(高位交叉编址就相当于把内存扩充了而已)其实内存地址都是编好号的,因为地址总线是固定的,只是插入内存条的时候可以考虑使用多个内存条,之间使用了低位交叉编址技术(俗称“双通道”技术)

问题:

memory的存储字长(一次读写位数)和数据总线宽度之间的关系?存储器如何进行的单字节/三字节读写,和汇编指令的关系?=按字/字节寻址=存储矩阵?存储字长这个概念到底存不存在?汇编语言中对内存的访问是按照任意地址的对吧?8bit

操作系统负责磁盘读写,但是操作系统软件也是程序,因此可以直接汇编代码编写磁盘读写?汇编语言中将磁盘地址(扇区号,磁道号blabla这些)存在CPU寄存器中,然后通过数据?总线传递到负责磁盘读写的接口?(有磁盘bios吗?CPU能看到磁盘bios吗?)所以就是CPU数据总线传输磁盘地址+要磁盘数据的内存地址?

核心矛盾在于操作系统也是程序啊,也需要通过CPU运行,不能什么都推给操作系统吧?

系统总线包括那三个,那IO总线是什么?和CPU连接吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值