嵌入式工程师必备,存储器知识总结

1、存储器的概念

(1) 存储器:存储器是计算机硬件系统的记忆设备,用来存放程序(软件)和各种数据。现在计算机硬件系统的核心就是存储器和CPU。

(2) DMA:一种可以让存储器与IO设备进行数据存取的方式。设计理念就是为了在IO设备与存储器进行数据存取时不去打扰CPU。

2存储器的分类

(1) 按照存储器的介质分类

1.1 半导体存储器:由半导体组成的存储器称为半导体存储器,半导体的存储器体积小,功率低,存取时间短,但是电源消失时,所存储的数据也会丢失,是一种易失性存储器;

1.2 磁材料存储器:由磁材料做成的存储器称为磁性存储器,在金属或塑料上涂抹一层磁性材料,用来存放数据,特点是非易失即断电后不数据不消失,存取速度比较慢;

1.3 盘存储器:光盘存储器使用激光在磁光材料上进行读取,特点是非易失性,耐用性好,记录密度高。现在多用在计算机系统中用作外部存储。

(2) 按照存储器的数据存取方式分类

2.1 随机存储器(Random Access Memory RAM):RAM(随机存储器)是一种可以读可以写的存储器,它的任何一个存储单元的内容都可以随机存取,而且存取的时间与物理位置无关,我们的内存(主存)就是这种RAM(随机存储器);

2.2 只读存储器(Read Only Memory ROM):ROM(只读存储器)是一种只能写入一次原始信息,写入之后,只能对去内部的数据进行读出,而不能随意重新写入新的数据去改变原始信息;

2.3 串行访问数据存储器:在对存储器的存储单元进行读写操作时,必须要按照存储单元的物理位置先后寻址地址,这种存储器就为串行访问存储器。这种存储器在存取数据时,需要按照存储器的存储单元的位置显示进行存取。

(3) 按照其在计算机系统中的作用

3.1 主存储器(主存):通常指我们所说的内存,它可以直接与CPU交换数据的存储器,特点速度快,容量小,价格高。主存采用半导体制作,所以是易失性存储器;

3.2 辅助存储器(辅存):通常指我们所说的外存,用来存放当前没有使用的程序和数据,它不能直接与CPU交换数据,需要加载到主存。特点速度慢,容量大,价格便宜。辅存属于非易失性存储器;

3.3 缓冲存储器(缓存):主要用到俩个速度不同的部件之中,现在基本用在CPU与主存之间,起到缓存的作用。

3、存储器的层次

(1) 存储器的层次按照它的3个指标即速度,容量,每位价格进行划分分别是:

寄存器=>缓存=>主存=>磁盘=>光盘

越是上层的存储器它的容量越小,速度越快,每位价格越高,越是下层的存储器容量越大,速度越慢,每位价格越低。

寄存器是CPU中的一个存储器CPU实际上是拿寄存器中的数进行运算和控制,它的速度最快,价格最高。缓存也被设置到了CPU中。

(2) 缓存与主存主要是为了解决CPU与主存速度不匹配的问题,因为CPU速度要快与主存,而缓存也快与主存,只要将CPU近期要使用的数据调入到缓存中,CPU直接从缓存中获取数据,来提升数据的访问速度,降低CPU的负荷。主存与缓存的数据调动是由硬件自己完成的。

(3) 主存与辅存主要用来解决存储系统的容量问题,辅存比主存速度低,并且不能被CPU之间访问,但它容量大,当CPU需要运行程序时,将辅存的数据调入到主存,CPU在来访问。主存和辅存之间的数据调动由硬件和操作系统共同完成。

4、主存功能

主存储器是能由CPU直接编写程序访问的存储器,它存放需要执行的程序与需要处理的数据,只能临时存放数据,不能长久保存数据。

组成:

● 存储体(MPS):由存储单元组成(每个单元包含若干个储存元件,每个元件可存一位二进制数)且每个单元有一个编号,称为存储单元地址(地址),通常一个存储单元由8个存储元件组成;

● 地址寄存器(MAR):由若干个触发器组成,用来存放访问寄存器的地址,且地址寄存器长度与寄存器容量相匹配(即容量为1K,长度无2^10=1K);

● 地址译码器和驱动器

● 数据寄存器(MDR):数据寄存器由若干个触发器组成,用来存放存储单元中读出的数据,或暂时存放从数据总线来的即将写入存储单元的数据【数据存储器的宽度(w)应与存储单元长度相匹配】。

主要技术指标:

● 存储容量:一般指存储体所包含的存储单元数量(N);

● 存取时间(TA):指存储器从接受命令到读出∕写入数据并稳定在数据寄存器(MDP)输出端;

● 存储周期(TMC):两次独立的存取操作之间所需的最短时间,通常TMC比TA长;

● 存取速率:单位时间内主存与外部(如CPU)之间交换信息的总位数;

● 可靠性:用平均故障间隔时间MTBF来描述,即两次故障之间的平均时间间隔。

5、高速缓冲存储器(缓存)

1)高速缓冲存储器的设计理念:为了解决由于IO设备向主存请求的级别高于

CPU向主存请求,也就是说IO设备在使用主存时,CPU要等待IO设备访存,导致 CPU工作效率降低,可以在CPU与主存之间加一级缓存,这样CPU可以从缓存中获取数据,另外主存的速度要低于CPU,缓存也是为了解决这俩个硬件设备速度不匹配的问题。

2)程序访问的局部性:即程序的数据和指令在主存中是连线存放的,并且有些指令和数据往往被多次调用,循环什么的,这样CPU在访问主存时只要将近期需要使用的数据和指令放到Cache中,就可以在一定时间内一直访问Cache,称缓存命中。

3)缓存的工作原理:将主存和缓存分成若干个块,每个块存储的容量都是相同的,任何时刻都有一些主存的块处在缓存块中,可以将缓存当成主存的一个映射,CPU在读取主存的某个字时都会先去缓存中访问,有二种可能,一是缓存中有当前字,CPU直接访问(CPU与缓存通常一次传送一个字)称为缓存命中;另一种是所需的字不在cache中,此时需要将该字所在的主存整个块一次调入Cache中(缓存与主存是按照字块传送)称为缓存不命中。

4)主存与缓存之间数据的调入是由机器硬件自动完成的,用户编程时使用的只是主存地址,也就是说cache对我们来说是透明的。

5)我们平时在写程序时所说的缓存指的是主存到辅存(或者说是内存到硬盘之间设立一个类似于缓存的区域)来减少磁盘的IO提升性能,而这里的缓存指的是CPU与主存之间的。

6ROMRAM

RAM(随机存储器)。可读出,也可写入,随机存取,意味着存取任一单元所需的时间相同,当断电后,存储内容立即消失,称为易失性。

ROM(只读存储器)。定义:ROM一旦有了信息,不易改变,结构简单,所以密度比可读写存储器高,具有易失性。

分类:

● 固定掩模型ROM(不能再修改)

● PROM可编程之读存储器(由用户写入,但只允许编程一次)

● EPROM可擦除可编程只读存储器(可用紫外线照射擦除里面内容)

● E2PROM电擦除可编程只读存储器(由电便可擦除里面内容)

7、辅助存储器(外存)

(1) 辅存概念与设计理念:辅助存储器主要为了给主存提供程序和数据的输入和用来在计算机脱机时保存所有的计算机数据.属于非易失性存储器,通常辅存也称为外存,由硬磁盘和软磁盘,磁带,光盘等.形成了主辅层次存储器。

(2) 硬磁盘(硬盘):现在计算机采用的辅存多采用硬磁盘(硬盘),即在一组圆形的盘面上涂抹磁性材料。通过这个硬盘的运作和磁头进行读写,磁头划的一个圈称为磁道,硬盘存取数据时是直接存取的,分为俩部分一是找到相应的磁道,然后是磁头开始读写。

(3)硬盘组成:硬盘由磁盘驱动器,磁盘控制器,盘片组成。

磁盘分区表(partitiontable):利用参考对照磁柱号码的方式来切割硬盘分区!在分割表所在的64 bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。若将硬盘以长条形来看,然后将磁柱以直条图来看,那么那64 bytes的记录区段有点像底下的图示:

上图中我们假设硬盘只有400个磁柱,共分割成为四个分割槽,第四个分割槽所在为第301到400号磁柱的范围。

由于分割表就只有64 bytes而已,最多只能容纳四笔分割的记录,这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。根据上面的图示与说明,我们可以得到几个重点资讯:

● 其实所谓的『分割』只是针对那个64 bytes的分割表进行配置而已!

● 硬盘默认的分割表仅能写入四组分割资讯<主要分割与扩展分配最多可以有四条(硬盘的限制)>;

● 这四组分割资讯我们称为主要(Primary)或延伸(Extended)分割槽;

● 扩展分配最多只能有一个(操作系统的限制);

● 逻辑分割是由扩展分配持续切割出来的分割槽,如果扩展分配被破坏,所有逻辑分割将会被删除;

● 能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。扩展分配无法格式化;

● 分割槽的最小单位为磁柱(cylinder);

● 逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63号),SATA硬盘则有11个逻辑分割(5号到15号);

● 当系统要写入磁碟时,一定会参考磁盘分区表,才能针对某个分割槽进行数据的处理。

8、内存与外存的比较

希望帮到大家!

时间: 2024-11-05 13:41:16

嵌入式工程师必备,存储器知识总结的相关文章

单片机工程师必备的知识

C语言编程 程序编译过程  哪部分干什么 数据结构  链表 二叉树 算法   数组  堆栈 队列算法 遍历 常量在内存中的表现形式 语法和内存的对应关系 数电 UML 类图 时序图 状态图 用例图  流程图

嵌入式工程师必知必会 —— 读书笔记1、需掌握的知识

<嵌入式工程师必知必会>,Lewin A.R.W.Edwards 著:张乐锋等译. 很多人推荐这本书,最近也一直在看,把觉得有用的东西记录下,以后自己可以看看,也希望能给想学习嵌入式的朋友带来一点帮助. 一.嵌入式工程师应该掌握的知识 这里给出了一些理论知识与实践技能,我个人认为这些理论知识与实践技能是嵌入式工程师必须掌握的. 1.至少要对印制电路板中电源的走线有基本理解,了解糟糕的布局布线对对电源质量造成什么样的严重后果. 2.同样,你还应该对印制电路板的布线如何影响信号传播有基本理解. 3

后ARM时代,嵌入式工程师的自我修养

1嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了.这其实是有一定片面性的:首先ARM是个CPU架构,跟PC上的X86架构一样,你见过有人在Windows下面学习C/C++编程.MFC编程.网络编程.互联网编程,说自己学习X86的吗?当然,也不可否认,嵌入式平台的多样性.硬件的可定制性导致我们在嵌入式平台上开发

前端工程师必备技能汇总

首先,看一张前端知识结构图:  (原文: ithomer) 图片的形式具有诸多的不便.缺失源图的我们,无法为此图贡献些什么,随着时间的迁移,或许有些技术点会发生改变,所以有了这个GitHub项目.我们可以通过协作的方式来共同维护这个项目.Git的历史记录也可以见证前端行业的一些变迁. 尽管会变成文字的方式来维护这些内容,但是我承诺写一个小工具帮大家生成更好玩的图形(基于DataV项目). 前端开发知识结构 前端工程师 浏览器 IE6/7/8/9/10/11 (Trident) Firefox (

『嵌入式工程师的工作环境』是怎样的?----转载自知乎

『嵌入式工程师的工作环境』是怎样的? 赞同29反对,不会显示你的姓名 li crifan,走别人没走过的路,让别人有路可走 陈海涛.潘嘉.冯敬一 等人赞同 针对区域或城市行业前景分析区域的话:总体来说,一线城市,北上广深,搞IT的,包括嵌入式,肯定是机会最多,前景最好.其他二线或三线城市,比如南京,杭州,西安,苏州,成都,珠海等等,好像也可以.但是机会肯定没北上广深多.前景:最近的物联网,智能硬件等方向的兴起,对于嵌入式发展,应该还是有不少带动作用的.注:谈到赚钱多少,在接下来一段时间内,估计包

深度分析:从菜鸟到嵌入式工程师的蜕变

嵌入式可以简单分为硬件与软件,然而其中的知识体系却是异常的庞大,这也是众多新手望而却步的一个原因,那究竟要如何才能成为一名嵌入式大咖呢?今天和大家聊一聊嵌入式学习路线,大致分为三个阶段:基础篇.进阶篇.大咖篇. 一.基础篇 此阶段主要是前期的入门过程,主要针对入行没多久的新人.其实成功没有捷径,所以打好基础才是关键.主要包含以下3个方面的内容: 1:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程

前端开发工程师和美工 知识需求的区别

摘要:很多公司甚至是多数以互联网网站为主要业务的公司都会把“美工”的概念搞混淆,通常这些公司都会把网页设计+网页制作的人员统称为“美工”.而一家成熟的互联网公司则会把网站方面的人才规划的比较详细,如UED团队(用户体验设计,英文User Experience Design的缩写),其中详细划分成了“交互设计”.“视觉设计”.“前端开发”.“用户研究”.“文案”等职位.今天主要就为了这个话题,与大家分享一下“美工”与“前端”之间的职能区别… 一. 什么是美工? 美工:意为美术工程师(Art Eng

优秀软件测试工程师必备的8个能力!-(附思维导图)

结合自己以往的工作经验,自己梳理出来一些材料,绝对原创,绝对干货. 优秀的软件测试工程师必备的"8个能力" 作为一名软件工程师,需要的能力并不多,但是要成为一名优秀的软件测试工程师,需要的能力就比较多了,自己整理出来8个方面,每个方面都会分成很多细小的方便并进行举例说明.同样的,文章的思维导图放在文末,需要原图直接找我. 文章一共4500字左右,预计阅读时间9分钟 不废话,上干货! 一.业务分析能力 1.分析整体业务流程 不了解整个公司的业务,根本就没办法进行测试2.分析被测业务数据

嵌入式工程师都是“匠人”!

就在昨天的沙龙会议上,可以说是受益匪浅,能和大牛级别的牛工交流谈谈关于嵌入式行业的有关问题,然而今天给我印象最深的要是牛工说的"搞嵌入式的工程师都是匠人"做为一个出入行业的人来说真是摸不到头脑啊!为了搞清楚让我们深刻理解更多,牛工还特地给大家写了一份书面的回答,在这里真的要谢谢牛工的细心解答.原文如下:我说的搞嵌入式的工程师是最聪明的,应该还有个限定词是上世纪80年代就介入嵌入式开发的那批人最聪明.原因是:1.他们对嵌入式系统的演变过程最清楚:2.他们对嵌入式系统的体系结构最了解:3.