精华内容
下载资源
问答
  • 存储器类型

    2020-11-14 17:31:37
    Flash EEPROM和PRAM是用于智能卡早期开发的存储器类型)  对于多应用智能卡,它可以同时管理几个应用。最常用的芯片中ROM容量约为EEPROM容量的两倍,以便提供足够的空间来存储非常复杂的操作系统代码。对于单应用...
  • 存储器的类型将决定整个嵌入式系统的操作和性能,因此存储器的选择是一个非常重要的决策。无论系统是采用电池供电还是由市电供电,应用需求将... 图1列出了在嵌入式应用系统中最常用存储器类型。下面讨论在选择存储器
  • 存储器的类型将决定整个嵌入式系统的操作和性能,因此存储器的选择是一个非常重要的决策。  无论系统是采用电池供电还是由市电供电,应用需求将决定存储器的... 图1列出了在嵌入式应用系统中最常用存储器类型。下
  • 存储器的类型将决定整个嵌入式系统的操作和性能,因此存储器的选择是一个非常重要的决策。 无论系统是采用电池供电还是由市电供电,应用需求将... 图1列出了在嵌入式应用系统中常用存储器类型。下面讨论在选择存
  • 从存储器发展过程的角度,对嵌入式系统里常用存储器类型,以及各种存储器特点、主要的应用场合进行了概述,针对最常用的两种flash(NOR,NAND)进行了比较详细的对比说明。 存储器的分类 在我们的印象里,存储器...


        现在的嵌入式系统里有很多种类型的存储器可供选用,作为一个嵌入式工程师需要了解各种类型存储器的差别,并且知道如何正确有效的使用。从存储器发展过程的角度,对嵌入式系统里常用的存储器类型,以及各种存储器特点、主要的应用场合进行了概述,针对最常用的两种flashNORNAND)进行了比较详细的对比说明。

    存储器的分类

    在我们的印象里,存储器类型不是RAMrandom access memory  随机存储器)就是ROMRead Only Memory 只读存储器)。然而RAMROM下面有很多的分支,并且作为混合型存储器(hybrid)综合了RAMROM两种存储器的特点。在RAM器件里,数据在任何位置是可读写的,数据掉电消失;在ROM器件里,数据是可以随意读取的,但是不能写入,数据掉电保存;Hybrid使用起来象ROM,但是在一些条件下是可写入的。下表列出了嵌入式系统常用的存储器类型:


    嵌入式系统里常用的存储器类型

    1RAM分类

    RAM成员有有两种重要的存储器器件:静态随机存储器(SRAM)和动态随机存储器(DRAM)。他们之间主要的区别是数据存储的持续时间。只要系统不断电SRAM会一直保持里面的内容,如果断电或者仅仅瞬间断电,SRAM里面的内容会永久消失。对于DRAM,系统需要周期性的刷新,当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的12,则认为其代表1,并把电容充满电;若电量小于12,则认为其代表0,并把电容放电,以此来保持数据的连续性。

    SRAMDRAM的选择上,系统设计人员必须考虑器件性能以及成本。SRAM器件提供快速的操作性能(通常是DRAM的四倍),但是价格要高一些。通常来说SRAM用在对性能要求很高的场合。如果一个系统需要很少量的内存(比如几十KB)并且主芯片内没有DRAM控制器时,SRAM会是一个比较好的选择,因为节省了DRAM控制器的成本。

    当一个嵌入式系统需要大量的内存的时候并且对内存的性能要求不是那么高的时候,通常选用DRAM。有一些系统SRAMDRAM会一起使用:少量的SRAM(几十~几百KB)来处理关键数据,其它的需要大量内存的使用DRAM。例如普通PC上,就是在CPU片内用SRAM来作为L2缓存,而使用DRAM或者是它的升级版作为我们的主内存。

    2ROM分类

    我们用写入ROM的方法和可写入的次数来区分不同的ROM。这种分类的方法反映出ROM器件的发展过程:从带掩膜的只读存储器到可一次写入到可擦写。ROM的共性是即使掉电也能保持片内的数据不变。

    最早的ROM带掩膜的只读存储器,在芯片生产之前必须准备好ROM要写入的内容,也就是说实际写入的数据的不同会导致ROM里晶体管的排列不同。带掩膜的只读存储器的优点是大批量生成并且不需要修改程序的情况下,价格便宜。

    另一种类型的ROM是可编程的ROMprogrammable ROMPROM),出厂的时候是未写入状态(所有的bit1)。我们需要使用编程器把程序写入到PROM里,写入的过程需要在PROM的某个管脚上加上比普通操作要高的电压。一旦我们使用这种方法对PROM写入了数据,PROM里面的数据就不会改变。如果我们必须要改变里面的内容,只能把这个片子拆下来,换个新片进行烧写。PROM器件就是我们所熟知的OTP器件。

    可擦除写入存储器(erasable-and-programmable ROM ,EPROM)写入的过程和PROM类似,但是,EPROM是可重复擦除写入的。擦除EPROM需要使器件暴露在强紫外光下,EPROM器件的上面有一个小窗,强紫外光透过这个小窗,使得EPROM恢复未初始化状态。EPROM擦除的时间比较长,一般为1045分钟。现在EPROM已经被技术跟先进的器件所替代,很少能看到EPROM器件了。

    3、混合型(Hybrid)分类

    随着存储器技术的成熟,有很多器件具有RAMROM两者的优点,把这种器件归为混合型存储器。Hybrid存储器能象RAM一样进行读写,也能象ROM一样掉电保持片内数据。对Hybrid器件的写入和RAM类似,但是需要的时间要比RAM长的多,所以我们不能用这种类型的器件作为系统内存。EEPROMflash主要继承了ROM的特性,NVRAM主要继承了SRAM的特性。

    电可擦除写入存储器(electrically-erasable-and-programmable ROM, EEPROM)和EPROM类似,但是擦除操作是通过电来完成。EEPROM可以进行一个字节的的擦写,一旦数据被写入到EEPROM会一直保持,直到下次被擦除。EEPROM的擦写寿命一般为10万次,访问接口一般为I2C或这SPI。在嵌入式系统里,一般用EEPROM存储少量的会被频繁更改的数据信息,比如在机顶盒里一般用EEPROM来存储的当前频道信息,音量大小等。

    非挥发性随机存取存储器(nonvolatile RAM)通常是由SRAM和后备电池组成。系统带电的时候操作和SRAM一样,系统掉电的时候,NVRAM从电池供电以保持里面现在的状态。

    Flash器件综合了上述存储器的优点,容量大、低成本、非挥发性、快速(对于读来说)、以及电可擦除写入功能。这些优点是非常突出的,所以现在嵌入式系统里大量使用flashflasheeprom技术是非常类似的,主要的差别是flash一次只能擦除一个扇区(sector)或者一个块(block),而不是一个字节。Flash里有两个重要的分支,NOR flashNAND flashNORNAND是以芯片内晶体管的连接形态不同而命名的,NOR是或非,NAND是与非。

    下面主要概述一下NOR flashNAND flash的差异:

    NOR flash

    NAND flash

    XIP能力

    性能

    擦除慢

    写入慢

    读取快

    擦除快

    写入快

    读取快

    容量

    常用范围为1MB~32MB

    常用范围为16MB及以上

    成本(每byte

    擦写次数

    10万次

    100万次

    坏块

    不存在

    存在坏块,需要进行坏块处理

    寻址能力

    随机

    需要串行访问

    易于使用性

    简单

    复杂

    主要使用范围

    程序存储

    数据存储(比如CFSDMMCPCMCIAMP3DC等)

    1  NOR flashNAND flash的主要差异

    3.1、接口差异

    NOR flash带有SRAM接口,无需专门接口电路,可以很容易地存取其内部的每一个字节,具有片内执行能力(XIP, eXecute In Place),应用程序可以直接在NOR flash上运行,而不必把代码先读取到RAM再运行。但同时也导致引脚较多,一般需要40个引脚以上,和片内容量有关。

    NAND器件需要的引脚很少,通常需要不到20个引脚。NAND采用数据线、地址线、命令线共享I/O的方式来串行地存取数据,各个产品或厂商的方法可能各不相同。读取片内数据的话需要先发送命令,地址(页内偏移,页号,块号),再从片内读取数据。相对NOR flash来说读取数据会慢一些。由于NAND flash不具备XIP能力,所以在使用时需要主芯片具有NAND flash控制模块,或者在系统上添加一个NOR flash用来存储启动代码。现在有些NAND flash片内集成了NAND flash 控制模块和一个小容量的nor flash,具备了片内执行能力,比如DOCdisk on a chip)系列。

    3.2、擦除写入速度

    NOR flash通常是以32KB128KB为单位进行擦除和写入的,一般需要消耗的时间为秒级。NAND flash一般是以832KB为单位进行擦除和写入的,执行相同的操作所消耗的时间为毫秒级。

    3.3、容量和成本

    NORFLASH的每个存储单元与位线相连,增加了芯片内位线的数量,不利于存储密度的提高。在面积和工艺相同的情况下,NANDFLASH的容量比NOR要大得多,生产成本更低,也更容易生产大容量的芯片。NOR flash占据了容量为1~16MB flash市场的大部分,而NAND flash比较适用与16MB以上的产品当中,NOR flash主要应用在代码存储介质中,NAND适合于数据存储。

    3.4、耐用性

    在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势。

    除了以上差异外,NAND flash有一个很大的缺点是存在坏块。器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,不划算。使用NAND器件,需要先对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在使用的时候要配合 EDC/ECC(错误探测/错误更正)BBM(坏块管理)等软件措施来保障数据的可靠性。

    本文主要概述了嵌入式系统常用的各种存储器,对两种flash进行了对比说明。


    展开全文
  • 存储器层次结构

    2019-09-21 18:43:48
    了解存储设备的类型和特点;重点理解局部性原理和缓存思想在存储层次结构中的应用 重点练习题:6.2,6.3,6.4,6.8,6.9,6.10,6.11,6.12, 6.13 存储器层次结构 实际上,存储器系统是一个具有不同容量和...

    第七周:学习任务教材第六章
    了解存储设备的类型和特点;重点理解局部性原理和缓存思想在存储层次结构中的应用

    重点练习题:6.2,6.3,6.4,6.8,6.9,6.10,6.11,6.12, 6.13

    存储器层次结构
    实际上,存储器系统是一个具有不同容量和成本和访问时间的存储设备的层次结构。

    CPU寄存器保存着最常用的数据。

    三种常见存储技术:

    RAM/ROM/磁盘

    6.1.1随机访问存储器

    随机访问存储器分为两类:静态和动态。

    静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵的多。

    SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。

    DRAM用来作为主存以及图形系统的帧缓冲区。

    典型地,一个桌面系统的SRAM不会超过几兆字节,但是DRAM却有几百或几千兆字节。

     

    1.静态RAM

    SRAM将每个位存储在一个双稳态的存储器单元里。

    每个单元是用一个六晶体电路来实现的。

    这个电路有这样一个属性,它可以无期限地保持在两个不同的电压配置或状态之一。其他的任何状态都是不稳定的——从不稳定状态开始,电路会迅速地转移到稳定状态中的一个。这样一个存储器单元雷士倒转的钟摆。

     

    2.动态RAM

    DRAM将每个位存储为对一个电容的充电。

    这个电容非常小,通常只有大约30毫微微法拉。

    DRAM存储器可以制造得非常紧密,但是,与SRAM不同,DRAM存储器单元对干扰非常敏感。当电容的电压呗扰乱之后,就不会恢复了。

    暴露在光线下会导致电容电压的改变。

    只要有供电,SRAM就会保持不变,与DRAM不同,它需要不断地刷新。

    SRAM的存储比DRAM快。

    SRAM对诸如光和噪声这样的干扰不敏感。

    代价是SRAM单元比DRAM单元使用更多的晶体管,因而密集度低,而且更贵,功耗更大。

     

    3.传统的DRAM

    DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。

    一个dXw的DRAM总共存储了dw位信息。

     

    4.存储器模块

    DRAM芯片包装在存储器模块中,它是插到主板的扩展槽上的。

    最常见的包装包括168个引脚的双列直插存储器模块,它以64位为块传送数据到存储控制器和从存储器传出数据,还包括72个引脚的单列直插存储器模块,它以32位为块传送数据。

     

    5.增强的DRAM

    每种都是基于传统的DRAM单元,并进行了一些优化,改进了访问基本DRAM单元的速度。

    快页模式DRAM:

    传统的DRAM将超单元的一整行拷贝到它的内部缓冲区中,使用一个,然后丢弃剩余的。

    扩展数据输出DRAM:

    FPM DRAM的一个增强的形式,它允许单独的CAS信号在实际上靠得更紧密一点。

    同步DRAM:

    SDRAM能够比那些异步的存储器更快地输出超单元的内容。

    双倍数据速率同步DRAM:

    DDRSDRAM是对SDRAM的一种增强,它通过使用两个时钟沿作为控制信号,从而使DRAM的速度翻倍。

    Rambus DRAM:

    这是另一种私有技术,它的最大带宽比DDR SDRAM的更高。

    视频RAM:

    它用在图形系统的帧缓冲区中。

     

    6.非易失性存储器:

    如果断电,DRAM和SRAM会丢失它们的信息,从这个意义来说,它们是易失去的。另一方面,非易失性存储器即使是在关电之后,也还保存着它们的信息。

    PROM只能被编程一次。PROM的每个存储器单元有一种熔丝,它只能用高电流熔断一次。

     

    7.访问主存:

    数据流通过称为总线的共享电子电路在处理器和DRAM主存之间来来回回。每次CPU和主存之间来来回回。

    每次CPU和主存之间的数据传送都是通过一系列步骤来完成的,这些步骤称为总线事物。写事务从CPU传送数据到主存。
    ROM有PROM,EPROM,E2PROM,FLASH。

    6.1.2磁盘存储

    磁盘构造:磁盘由盘片构成,表面覆盖着磁性记录材料,中央有一个可以旋转的主轴 ,旋转速率大约为5400-15000每分钟。磁盘的每个表面是一组称为磁道的同心圆组成,每个磁道被划分为一组扇区,扇区之间由一些间隙隔开,间隙存储用来标识扇区的格式化位。

    磁盘容量决定因素:

    记录密度(位/英寸):磁道一英寸的段中可以放入的位数。

    磁道密度(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数

    面密度(位/平方英寸):记录密度与磁道密度的乘积。
    访问时间:寻道、旋转、传送

    逻辑磁盘块:内存可以看成字节数组、磁盘可以看成块数组

     

     

    现代大容量磁盘使用一种称为多区记录的技术,柱面的集合被分割称为不相交的子集合,称为记录区,每个区包含一组连续的柱面。

    磁盘操作:

    磁盘用读/写头来读写存储在磁性表面的位,而读写头连接到一个传动臂 一端,通过移动转动臂将读写头定位在磁道上的机械运动称为寻道。磁盘以扇区大小的块来读写数据,对扇区的访问时间有三个主要的组成部分:

    寻道时间:

    转动臂将读/写头定位到包含目标扇区的磁道上所需时间。

    旋转时间:

    驱动器等待目标扇区的第一个位旋转到读/写头下的时间。最大为

     

     

     

    平均旋转时间是Tmax的一半。

     

        传送时间:读写并传送该扇区内容的时间。平均传送时间为:

             

     

    逻辑磁盘块:

    现代磁盘将盘面的构造视为一个B个扇区大小的逻辑块序列,磁盘控制器维护着逻辑块号和实际磁盘扇区之间的映射关系。逻辑块号可识别为一个盘面、磁道、扇区三元组,唯一的标识了相对应的物理扇区。内存可以看成字节数组、磁盘可以看成块数组。

    连接到I/O设备:所有的I/O设备都是通过I/O总线连接到CPU和主内存。有三种不同类型:

    通用串行总线:一个广泛的使用标准,用于连接各种外围I/O设备。

    图形卡(或适配器):包含硬件和软件逻辑,代表CPU在显示器上画像素。

    主机总线适配器: 将一个或者多个磁盘连接到I/O总线,使用一个特别的主机总线接口定义的通信协议。

    访问磁盘:

    CPU使用一种称为存储器映射I/O的技术向I/O设备发出命令,地址空间中为I/O设备通信保留的地址称为I/O端口。
    总线:
         数据总线、控制总线、地址总线
     
    6.2 局限性
        一个编写良好的计算机程序通常具有良好的局部性。他们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向称为局部性原理。

    局部性有两种不同形式:时间局部性和空间局部性。

    有良好局部性的程序比局部性差的程序运行的更快。

    6.2.2 取指令的局部性


    6.3 存储器层次结构
        高速缓存是一个小而快速的存储设备,作为存储在更大、也更慢的设备中的数据对象的缓冲区域。使用高速缓存的过程称为缓存。

    存储器层次结构的中心思想是:每一层都缓存来自较低一层的数据对象。

     

    第k+1层的存储器被划分为连续的数据对象片,称为块。每个块都有唯一的地址和名字。类似第k层也被划分为较少的块的集合,块的大小与k+1层是一样的,第k层的缓存包含第k+1层块的一个子集的拷贝。

    数据总是以块为传送单元在两层之间来回拷贝。不同层次对之间可以有不同的块大小。


    6.4 高速缓存存储器

    高速缓存结构(S,E,B,m):高速缓存组、高速缓存行、块
    早期的计算机系统的存储器层次结构:CPU寄存器、DRAM主存储器和磁盘存储

    CPU与主存之间插入

    - L1高速缓存:位于CPU寄存器文件和主存之间,访问速度2-4个时钟周期

    - L2高速缓存:位于L1高速缓存和主存之间,访问速度10个时钟周期

    - L3高速缓存:位于L2高速缓存和主存之间,访问速度30或40个时钟周期

    一般而言,高速缓存的结构可以用元组(S,E,B,m)来描述。

    高速缓存的大小(或容量)C指的是所有块的大小的和。标记位和有效位不包括在内。因此,C=S*E*B.

    6.4.2 直接映射高速缓存

    高速缓存确认一个请求是否命中,然后抽取出被请求的字的过程,分为三步:

                                                                                             组选择、行匹配、字抽取

    根据E(每个组的高速缓存行数)高速缓存被分为不同的类。每个组只有一行的高速缓存被称为直接映射高速缓存。

    1.直接映射高速缓存中的组选择

    2.直接映射高速缓存中的行匹配和字选择

    3.直接映射高速缓存中不命中时的行替换

     如果缓存不命中,那么需要从存储器层次结构中的下一层取出被请求的块,然后将新的块存储在组索引位指示的组中的一个高速缓行中。

    替换规则:用新取出的行替换当前的行。

    6.4.4 全相联高速缓存

    一个全相联高速缓存是由一个包含所有高速缓行的组(E=C/B)组成的。

    1.全相联高速缓存中的组选择

    2.全相联高速缓存中的行匹配和字选择

    转载于:https://www.cnblogs.com/20135314ZHU/p/4892938.html

    展开全文
  • flash存储器原理及作用是什么?

    千次阅读 2019-12-16 16:19:06
     flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术。计算机的BIOS 、数字照相机等的存储卡中都使用...

    flash存储器的工作原理
      flash存储器又称闪存(快闪存储器),是一种电可擦可编程只读存储器的形式,是可以在操作中被多次擦或写,EEPROM与高速RAM成为当前最常用且发展最快的两种存储技术。计算机的BIOS 、数字照相机等的存储卡中都使用闪存。flash存储器的主要特点是在不掉电的情况下能长期保持存储的信息。就其本质而言flash存储器属于EEPROM(电擦除可编程只读存储器)类型。它既有ROM的特点,又有很高的存取速度,而且易于擦除和重写, 功耗很低。目前其集成度已达4MB,同时价格也有所下降。由于flash存储器的独有优点,如在一些较新的主板上采用Flash ROM BIOS,会使得BIOS 升级非常方便。flash存储器可用作固态大容量存储器。
      目前普遍使用的大容量存储器仍为硬盘。硬盘虽有容量大和价格低的优点,但它是机电设备,有机械上的磨损,可靠性及耐用性相对较差,抗冲击、抗振动能力弱,功耗大。因此一直希望找到取代硬盘的手段。由于Flash Memory集成度不断提高,价格不断降低,使其在便携机上取代小容量硬盘已成为可能。 目前研制的flash存储器都符合PCMCIA标准,可以十分方便地用于各种便携式计算机中以取代磁盘。当前有两种类型的PCMCIA卡,一种称为Flash存储器卡,此卡中只有Flash Memory芯片组成的存储体,在使用时还需要专门的软件进行管理。另一种称为Flash驱动卡,此卡中除Flash芯片外还有由微处理器和其它逻辑电路组成的控制电路。它们与IDE标准兼容,可在DOS下象硬盘一样直接操作。因此也常把它们称为Flash固态盘。 flash存储器不足之处仍然是容量还不够大,价格还有点偏贵。因此主要用于要求可靠性高重量轻,但容量不大的便携式系统中。在586微机中已把BIOS系统驻留在Flash存储器中。
    flash存储器作用:
      FLASH存储器又被叫做闪存存储器,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。由于其掉电时仍能保存数据,闪存一般被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。
      另一方面闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此LFASH不能取代RAM。但是它结合了RAM和ROM的长处,不仅拥有电子可擦除可编程的性能,还不会在断电时丢失数据同时还可以快速读取数据,U盘和MP3里用的就是这种存储器。在过去的二十多年里嵌入式系统一般使用ROM例如EPROM等作为它们的存储设备,近年来Flash存储器全面代替了ROM在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用。
      总之FLASH存储器因为其体积小容量大速度快,且不需要电力来维持保存的信息的特点被广泛用于移动存储、MP3 播放器、数码相机、 掌上电脑等新兴数字设备中。

    展开全文
  • 1、内存:随机存取存储器,也叫主存,是与CPU直接交换数据的内部存储器。 2、指针:是编程语言中的一类数据类型及其对象或变量,用来表示一个存取器地址,这个地址的值直接指向存在该地址对象的值。 3、函数指针:...

    在C语言中,有很多极易混淆的概念(比如:内存和指针、函数指针、指针函数、数组指针、指针数组),也正是这些概念使得很多人学习起来很累,今天,笔者分享一下自己对这些的概念的理解。

    一、定义

    1、内存:随机存取存储器,也叫主存,是与CPU直接交换数据的内部存储器。

    2、指针:是编程语言中的一类数据类型及其对象或变量,用来表示一个存取器地址,这个地址的值直接指向存在该地址对象的值。

    3、函数指针:是一种在C、C++(类C语言)中指针,可以像一般的函数一样传参、调用、返回变量。

    4、指针函数:返回值是一个指针的函数称为指针函数。

    5、数组指针:当数组名作为取地址&运算符的操作数,则表达式的值为指向整个数组的指针

    6、指针数组:一个数组,数组中的各个元素都是指针。

    二、理解

    关键:代码中一切都是数据,而数据只有两个属性:首地址和长度,至于怎么读取这个数据与数据本身无关。

    如果你理解了上面这一句话,那么C语言中很多看似复杂的概念就很好理解了,那么接下来,我们来看下面这几句古文。

    ① 下雨天留客天留我不留

         这句话可以拆解成很多总句式:最常见的就是“下雨天,留客天,留我不?留!”,“下雨天留客,天留我不留。”。

    ② 黄河远上白云一片孤城万仞山羌笛何须怨杨柳春风不度玉门关

         上面这一段古文是一段千古佳话,传闻纪晓岚为人画扇,写下了上面这一段文字,要知道当时是没有标点符号的,所以纪晓岚也是写得一手大板书,细心的朋友可能已经发现了,如果纪晓岚写得是王之涣的《凉州词》,那么他少些了一个“间”字,王之涣的《凉州词》原文是:

    黄河远上白云间,一片孤城万仞山。

    羌笛何须怨杨柳,春风不度玉门关。

    这个问题也是立马就被纪晓岚的朋友发现了,当即指了出来,纪晓岚心想,这回可是糗大了,但是细细一看,纪晓岚灵机一动,立马把这个尴尬的词给圆了过去:

    黄河远上,白云一片,孤城万仞山。

    羌笛何须怨,杨柳春风,不度玉门关。

     

    古代汉语没有标点符号,写在纸上,就如同数据(0和1)存储在内存中,从上面我们可以知道:同一段内存空间,我们不同的读法,读取到的结果是不一样的,按照王之涣《凉州词》的读法,纪晓岚很明显就是错的,如果按照纪晓岚的那个读法,又是合情合理,也符合断句,也是朗朗上口。再者就是都是从“下”字(首地址)开始读,一次读取三个字是“下雨天”,一次读取五个字就是“下雨天留客”。如果把“下”字(首地址)比作内存地址(0xA12D1000)呢?你又能有什么体会?

    一:数据 = 首地址 + 长度

    二:所有的数据类型本质上就两种:单字节数据、多字节数据。

    从这个角度去从新理解上面的定义:

    1、内存:一个或者一组容器,能够存取数据的容器。

    2、指针:一个首地址。

    3、函数指针:  一个首地址。

    4、指针函数:返回  首地址 的函数。

    5、数组指针:一个首地址

    6、指针数组:一个数组,数组中的各个元素都是首地址。

     

    这样一来,你会发现上面的很多定义都成了首地址,既然都是首地址,那么那么他们的区别就是长度读取方式的不同了。

    这里需要面对一个不可逃避的问题:首地址也是一个数据。

    相信很多人,又会开始疑惑了,如果首地址也是一个数据,数据又只是首地址和长度......,那这岂不是成了无底洞?

    我的答案是,不是这样的,内存中每一个字节都有自己的唯一的地址,地址是唯一的,不过从某个地址上开始存储多少个字节的数据,这个数据是可变的,既然是可以变动的,那么自然也是可以吧另一个地址的值存到这里来。

    那我们再次更新一下上面的理解

    1、内存:存取所有的数据或者一段数据的容器。

    2、指针:数据。

    3、函数指针:  数据。

    4、指针函数:返回  数据 的函数。

    5、数组指针:数据

    6、指针数组:一个数组,数组中的各个元素都是数据。

     

    帮助理解(切记,不要在实际运用中使用):

     

    using namespace std;
    
    //定义一个函数指针
    typedef void(*pFUNCTION)(void);	
    
    void HelloWord(void)
    {
    	cout << "Hello Word!" << endl;
    }
    
    void GoodBye(void)
    {
    	cout << "Good Bye!" << endl;
    }
    
    
    int main(int argc, char** argv)
    {
    	pFUNCTION hello = HelloWord;
    	pFUNCTION bye = GoodBye;
    
    	//可以理解为,从函数void HelloWord(void)的首地址按照 int类型 的方式读取四个字节
    	int addrHello = (int)hello; 
    	int addrBye = (int)bye;
    
    	int myarray[2] = { addrHello, addrBye };
    
    	//从addr内存中的首地址开始按照 pFUNCTION类型 的方式读取一定长度的数据
    	pFUNCTION helloInt = (pFUNCTION)addrHello;
    	pFUNCTION byeInt = (pFUNCTION)myarray[1];
    	pFUNCTION byeInt1 = (pFUNCTION)*(myarray + 1);
    
    	helloInt();
    	byeInt();
    	byeInt1();
    
    	//你甚至可以这么干,当然,能不能运行我就不管了。
    	pFUNCTION func = (pFUNCTION)65536;
    	func();
    
    	return 0;
    }
    
    

     

    展开全文
  • 目前常用的有以下几种方法: cookie cookie会随着每次HTTP请求头信息一起发送,无形中增加了网络流量,另外,cookie能存储的数据容量有限,根据浏览器类型不同而不同,IE6大约只能存储2K。 FlashShareObject ...
  • Linux下逻辑设备有RAID和LVM ...如果想创建这两种类型的设备需要在分区时就选择好分区类型,下面是几种常用的分区类型:  fd RAID  8e LVM  82 SWAP  83 LINUX 一、LVM简介 LVM是 Logical Volume
  • 几种常用单片机之间的通信方式①采用硬件UART进行异步串行通信。这是一种占用口线少,有效、可靠的通信方式;但遗憾的是许多小型单片机没有硬件UART,有些也只有1个UART,如果系统还要与上位机通信的话,硬件资源是...
  • ##常用的是输入输出类型是处理文件,创建,读写文件的能力是 ##必须的 ##file:可以通过file类的对象来打开一个文件 ##注意:对文件的读写能力依赖于程序在打开文件时的指定模式 ##注意:当在完成对文件的一系列操作...
  • 2、计算机硬件由输入设备、输出设备、外存储器、内存储器、中央处理器(CPU)、机箱、主板、显卡、声卡、调制解调器(Modem)、网卡、稳压电源等组成。3、输入设备是指向计算机系统输入信息的设备。最常用的输入设备是...
  • 一般没有硬盘这样的存储设备而是使用Flash闪存芯片、小型闪存卡等专为嵌入式系统设计的存储装置,本文分析了嵌入式系统中常用的存储设备及其管理机制,介绍了常用的基于FLASH的文件系统类型。2. 基于Flash的文件...
  • 【1】掌握调度的类型与方式 【2】掌握常用的进程调度算法 【3】掌握死锁的相关知识 【4】深入领会银行家算法 本章学习重点和难点 【1】进程调度算法 【2】银行家算法 习题分析 一.判断改错题(判断由下划线标明的...
  • ARM常用概念须知

    2021-01-19 17:28:40
    文章罗列了关于ARM的22个常用概念。包括一些使用注意事项,ARM启动代码设计,ARM处理器运行模式,ARM体系结构所支持的异常类型和一些基本操作方法等等。  1.ARM中一些常见英文缩写解释  MSB:有效位;  LSB:...
  • 各种RAM、Rom类型

    千次阅读 2017-09-17 21:23:37
    ROM:只读存储器 RAM:随机存储器 随机存储器分为静态与动态: SRAM:静态随机存储器 DRAM:动态随机存储器 PROM:可编程只读存储器 EPROM:可擦可编程只读存储器 ...常用的flash:Norflash、NANDflash、EEPROM
  • 缓存原指CPU上的一种高速存储器,它先于内存与CPU交换数据,速度很快 现在泛指存储在计算机上的原始数据的复制集,便于快速访问。 在互联网技术中,缓存是系统快速响应的关键技术之一 以空间换时间的一种技术(艺术...
  • IAR 常用扩展关键字

    千次阅读 2016-05-27 10:39:17
    1、存储器属性:__data16 int 16;   __regvar 定义一个变量在工作寄存器中。例:__regvar int variable_name @R4 2、一般类型属性: (1)函数类型属性:__interrupt void TA0_ISR (void) 定义中断函数
  • Ø使用:const数据类型变量名; Ø作用:优化存储器的分配,表示变量的内容是常数,不会改变。 Ø举例:constchartab[1024]={显示数据}; volatile(易变的,不稳定的) Ø使用:volatile数据类型变量名; Ø作用...
  • Linux基础命令 在linux系统中一切皆文件,Linux文件系统中文件没有后缀名。...普文件是计算机操纵系统用于存放数据、程序等信息的文件,一般都长期保存于外部存储器(磁盘、磁带等)中。普通文件一般包括文本
  • 文章罗列了关于ARM的22个常用概念。包括一些使用注意事项,ARM启动代码设计,ARM处理器运行模式,ARM体系结构所支持的异常类型和一些基本操作方法等等。  1.ARM中一些常见英文缩写解释  MSB:最高有效位;  LSB...
  • 【C++】C++常用术语

    2018-09-10 20:34:13
    1.access labels(访问标号) ...一个数字,通过该数字可在存储器上找到一个字节。 3.arithmetic types(算术类型) 表示数值即整数和浮点数的类型。浮点型值有三种类型:long double 、...
  • 文章罗列了关于ARM的22个常用概念。包括一些使用注意事项、ARM启动代码设计、ARM处理器运行模式、ARM体系结构所支持的异常类型和一些基本操作方法等等。 01 ARM中一些常见英文缩写解释 MSB:最高有效位 LSB:最低...
  • Linux常用文件系统格式

    千次阅读 2014-08-15 16:02:36
    Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。... SDRAM)和ROM(常采用FLASH存储器),常用
  • C语言的类型转换

    千次阅读 2013-04-23 22:27:59
    256种状态对于常用的整数和浮点类型来说是远远不够的,因此这些类型的数据需要用多个字节来表示,如在32位环境下,int一般是4个字节,double一般是8个字节。对于跨越多字节的程序对象,我们必须建立一个规则:在...
  • 进程监控及管理常用命令一、进程linux进程概念: 进程是一个执行中的程序的实例(副本),所有系统上运行的数据都会以进程的类型存在。进程是计算机科学中最深刻最成功的概念之一。进程提供给应用程序的关键抽象是:...
  • C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得,即可理解为一个类型占位符。 int TestAuto()...
  • 本文罗列了关于ARM的22个常用概念。包括一些使用注意事项、ARM启动代码设计、ARM处理器运行模式、ARM体系结构所支持的异常类型和一些基本操作方法等等。01ARM中一些常见英文缩写解释MSB:最高有效位LSB:最低有效位...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 206
精华内容 82
关键字:

常用存储器类型