精华内容
下载资源
问答
  • 行业分类-设备装置-可与外部存储器互相读写数据的电视机
  • Android 内部存储器/外部存储器 /保存文件等 2014-01-10 00:07 773人阅读 评论(0) 收藏 举报  分类: Android(262)  本文译自:...
     

    Android 内部存储器/外部存储器 /保存文件等

      773人阅读  评论(0)  收藏  举报
      分类:

    本文译自:http://developer.android.com/training/basics/data-storage/files.html

    Android使用的文件系统与其他平台的基于磁盘的文件系统类似。本节课介绍如何使用File APIs来执行读写Android文件系统的操作。

    File对象适用于按顺序读写大数据,而不是跳跃式的读写。例如,它可以很好的读写镜像文件或基于网络的数据交换。

    本节课介绍在你的应用程序中如何执行基本的文件相关的任务。本节课假定你熟悉Linux文件系统基础和Java.io中标准的输入/输出APIs。

    选择内部或外部存储器

    所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器。这两个名称来自早期的Android,当时大多数设备都提供内置的固定的内存(内置存储器),外加一个可移动的存储介质,如micro SD卡(外部存储器)。有些设备把固定不变的存储空间分成“内部”和“外部”两部分,这样即使没有可移动的存储介质,也总会有两个存储空间,并且不管外部存储器是可移动的,还是固定的,API的行为是相同的。

    下面列出了每种存储空间的概要特性:

    内部存储器

    外部存储器

    始终有效

    它不是始终有效的,因为用户可以安装一个USB存储器来作为外部存储,并且在某些情况下会从设备上删除该外部存储器。

    默认情况下,保存在这里的文件只有保存它的应用程序才能访问。

    它是全局可读的,因此保存在这里的文件可以在你的控制之外被读取。

    用户卸载你的应用程序时,系统会从内部存储器中删除该应用程序相关的所有文件。

    用户卸载你的应用程序时,如果你把文件保存在从getExternalFilesDir()方法中获取的目录中,那么系统只会删除这个目录中的文件。

    当你确定用户和其他应用程序都不能访问你的文件时,使用内部存储是最好的选择。

    对于那些没有访问限制、想要跟其他应用程序共享或允许用户使用计算机来访问的文件,外部存储器是最好的选择。

    提示:尽管默认的情况下,应用程序是被安装在内部存储器上的,但是你可以在清单文件中指定android:installLocation属性,以便让你的应用程序被安装在外部存储器上。当APK的尺寸比较大,并还有比内部存储空间大的外部存储空间时候,用户会很乐意使用这个选项。更多信息,请看应用程序的安装位置

    获得使用外部存储器的权限

    要向外部存储器写入数据,你必须在清单文件中申请WRITE_EXTERNAL_STORAGE权限:

    <manifest ...> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    ... 
    </manifest>

    警告:当前,所有应用程序在没有指定权限的情况下,都具有读取外部存储器的能力。但是在未来发布的版本中,这种情况会被改变。如果你的应用程序需要读取外部存储器(但不向其中写入),那么你将会需要声明READ_EXTERNAL_STORAGE权限。因此,要确保你的应用程序能够继续你所期望的工作,就要在改变带来影响之前声明这个权限:

    <manifest ...> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    ... 
    </manifest>

    但是,如果你的应用使用了WRITE_EXTERNAL_STORAGE权限,那么就隐含着声明了读取外部存储器的权限。

    在内部存储器上保存数据,你不需任何权限。你的应用程序始终有权读写它在内部存储器目录中保存的文件。

    在内部存储器上保存文件

    在把文件保存到内部存储器上时,你可以通过调用以下两个方法之一所返回的File对象来获取相应的目录:

    getFileDir()

    返回一个用于你的应用程序的、代表内部目录的File对象。

    getCacheDir()

    返回一个用于你的应用程序缓存文件的、代表内部目录的File对象。在不需要这个文件时一定要确保将其删除,并且在任何时候,都要对你所使用的内存大小进行合理的限制,如1MB。如果系统在存储器的运行开始变慢,系统就会删除这些缓存文件而不会发出警告。

    你可以使用File()构造器,在上述方法所返回的目录中创建一个新的文件,例如:

    File file =newFile(context.getFilesDir(), filename);

    另外,你可以调用openFileOutput()方法来获得一个向内部存储目录中写入文件FileOutputStream对象。例如:以下代码演示如何向一个文件中写入文本:

    [java]  view plain copy
    1. String filename ="myfile";   
    2. String string = "Hello world!";
    3. FileOutputStream outputStream;   

    4. try {
    5.     outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
    6.     outputStream.write(string.getBytes());
    7.     outputStream.close();
    8. catch (Exception e) {
    9.     e.printStackTrace();
    10. }

    或者,如果你需要缓存某些文件,你应该使用createTempFile()方法来替代。例如,下列方法从一个URL中提取了文件名称,并用这个名称在你的应用程序的内部缓存目录中创建了一个文件:

    [java]  view plain copy
    1. publicFile getTempFile(Context context,String url) {
    2. File file;
    3. try {
    4.     String fileName = Uri.parse(url).getLastPathSegment();
    5.     file = File.createTempFile(fileName, null, context.getCacheDir());
    6. } catch (IOException e) {
    7.     // Error while creating file
    8.     return file;
    9. }

    注意:你的应用程序的内部存储目录是在Android文件系统的特定位置中由你的应用程序的包名称来指定的。从技术上来说,如果你把该文件模式设置为可读的,那么另外一个应用程序是可以读取你的内部文件的。但是,其他的应用程序还需要知道你的应用程序的包名和文件名。其他的应用程序不能浏览你的内部目录,并且除非你把该文件设置为可读或可写,否则其他的应用程序不能够对其进行读写访问。因此在内部存储器上,只要你的文件使用了MODE_PRIVATE模式,那么其他的应用程序就不会访问到它们。

    在外部存储器上保存文件

    因为外部存储器可能是无效的---如当用户把提供的外部存储器(SD卡)安装到PC或移除时---因此在访问外部存储器之前,你应该先确认它是否有效。你可以通过调用getExternalStorageState()方法来查询外部存储器的状态。如果返回的状态值等于MEDIA_MOUNTED,那么你可以读写你的文件。例如,下列方法用于判断存储器是否有效:

    [java]  view plain copy
    1. /* Checks if external storage is available for read and write */   
    2. public boolean isExternalStorageWritable() {
    3.     String state = Environment.getExternalStorageState();
    4.     if (Environment.MEDIA_MOUNTED.equals(state)) {
    5.         return true;
    6.     }
    7.     return false;
    8. }
    9.  
    10. /* Checks if external storage is available to at least read */
    11. public boolean isExternalStorageReadable() {
    12.     String state = Environment.getExternalStorageState();
    13.     if (Environment.MEDIA_MOUNTED.equals(state) ||
    14.             Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    15.         return true;
    16.     }
    17.     return false;   
    18. }  

    尽管外部存储器是可以比用户和其他应用程序编辑的,但是你可以有以下两种策略来保存你的文件:

    public files

    该类文件应该对其他应用程序和用户完全有效。当用户卸载你的应用程序时,这些文件应该保留对用户的有效性。

    例如,你的应用程序拍摄的照片或其他的下载文件。

    private files

    该类文件应该完全归属于你的应用程序,并且在用户卸载你的应用程序时,这些文件应该被删除。在技术上,尽管这些文件是可以被用户和其他应用程序访问的,因为它们是在外部存储器上,但是,它们不会把文件的值提供给你的应用程序以外的用户。当用户卸载你的应用程序时,系统会删除你的应用程序外部私有目录中所有的文件。

    例如,由你的应用程序下载的额外资源或临时媒体文件。

    如果你在外部存储器上保存公共文件,就要使用getExternalStoragePublicDirectory()方法来获取代表外部存储器上对应目录的File对象。这个方法需要指定你想要保存的文件的类型,以便他们能够被逻辑的跟其他公共文件组织到一起,例如DIRECTORY_MUSIC或DIRECTORY_PICTURES:

    [java]  view plain copy
    1. publicFile getAlbumStorageDir(String albumName) {
    2.     // Get the directory for the user's public pictures directory.   
    3.     File file = new File(Environment.getExternalStoragePublicDirectory(   
    4.             Environment.DIRECTORY_PICTURES), albumName);  
    5.     if (!file.mkdirs()) {
    6.         Log.e(LOG_TAG, "Directory not created");
    7.     }
    8.     return file;
    9. }

    如果想要把文件保存成只对你的应用程序私有,你可以通过调用getExternalFilesDir()方法,并给这个方法传递你希望的目录类型,来获取对应的目录。这种方法创建的每个目录都会被添加到一个父目录中,这个父目录封装了你的应用的所有的外部存储文件,在用户卸载你的应用程序时,系统会删除这些文件。

    例如,使用下面的方法创建一个独立的相册目录:

    [java]  view plain copy
    1. publicFile getAlbumStorageDir(Context context,String albumName){   
    2.     // Get the directory for the app's private pictures directory.   
    3.     File file = new File(context.getExternalFilesDir(   
    4.     Environment.DIRECTORY_PICTURES), albumName);   
    5.     if (!file.mkdirs()) {   
    6.         Log.e(LOG_TAG, "Directory not created");   
    7.     }   
    8.     return file;   
    9. }  

    如果你的文件不打算放到预定义的子目录中,你可以调用getExternalFilesDir()方法,并给该方法传递null参数。这样就会返回你的应用程序在外部存储器上的私有目录的根目录。

    要记住,getExternalFilesDir()方法创建了一个内部目录,用户卸载你的应用程序时,这个目录会被删除。如果你希望应用程序保存的文件在用户卸载你应用程序之后继续有效---如卸载了照相机应用程序,并且还希望保留该应用程序拍摄的一些照片,你就要使用getExternalStoragePublicDirectory()方法来代替。

    不管你使用getExternalStoragePublicDirectory()来创建共享文件,还是使用getExternalFilesDir()方法来创建应用程序的私有文件,重要的是使用由API提供的诸如DIRECTORY_PICTURES这样的常量。这些目录名确保了这些文件能够被系统正确的处理。例如,保存在DIRECTORY_RINGTONES目录中文件,会被系统的媒体扫描器作为铃声来处理,而不是音乐。

    查询可用的存储空间

    如果你想要事前了解你可以保存多少数据,你可以调用getFreeSpace()方法或getTotalSpace()方法来查看是否有足够的存储空间,而不会导致IOException异常发生。这两个方法分别提供了当前存储器中有效的可用空间和总空间。这些信息有益于避免在某个阀值之上来填充存储卷。

    但是,系统不会保证你可以向存储器中写入由getFreeSpace()方法所返回的字节数一样多的数据。如果返回的数字比你要保存数据多几MB,或者被占用的文件系统存储空间小于90%,那么数据可以被安全的写入,否则你不应该向存储器中写入数据。

    注意:在保存文件之前,你不必检查有效的存储空间,相反,你可以尝试立即写入文件,然后捕获是否发生IOException异常。如果你不能确切的只读你所需要的存储空间,就需要使用这个方法。例如,如果你要把PNG格式文件转换成JPEG格式的文件,在保存之前你不会知道该文件的尺寸。

    删除文件

    在不需要的时候,你应该始终删除这些文件。删除文件的最直接的方法是调用打开的File对象自身的delete()方法。

    myFile.delete();

    如果文件被保存在内部存储器上,你还可以调用Context对象的deleteFile()方法来定位和删除文件:

    myContext.deleteFile(fileName);

    注意:当用户卸载你的应用程序时,Android系统会删除以下内容:

    1. 内部存储器上所有的你的应用程序的文件;

    2. 外部存储器上所有的使用getExternalFilesDir()方法保存的文件。

    但是,你应该定期的手动删除所有的用getCacheDir()方法创建的缓存文件,以及那些不再需要的其他文件。

    本文转自:http://blog.csdn.net/fm9333/article/details/12836041

    展开全文
  • CPU和外部存储器的接口

    千次阅读 2018-12-14 21:25:57
    iNand是SanDisk公司出产的eMMC,moviNand是三星公司出产的eMMC oneNAND oneNand是三星公司出的一种Nand SD卡/TF卡/MMC卡 eSSD 总结: •1、现代SoC支持多种外部存储器 •2、外部存储器主要用来存储程序(可执行代码...

    CPU连接内存和外存的连接方式不同,内存RAM(DRAM、SRAM、SDRAM)需要直接地址访问,所以是通过地址总线和数据总线的总线式访问方式连接的(好处是直接访问、随机访问;坏处是占用CPU的地址空间,大小受限);外存ROM(硬盘、flash(Nand、inand······U盘、SSD)、光盘)是通过CPU的外存接口来连接的(好处是不占用CPU的地址空间,坏处是访问速度没有总线式快、访问时序复杂)。

    flash分为nandflash和norflash

    NorFlash总线式访问,接到SROM bank,优点是可以直接总线访问,也就是说可以原地运行,不用到内存中去运行,一般用来启动。(贵)
     但是现在Nandflash也可以用来启动。(性价比高)
    NandFlash分为SLC和MLC
    eMMC/iNand/moviNandeMMC(embeded MMC)    iNand是SanDisk公司出产的eMMC,moviNand是三星公司出产的eMMC
    oneNANDoneNand是三星公司出的一种Nand
    SD卡/TF卡/MMC卡 
    eSSD 

     

    总结:

    1、现代SoC支持多种外部存储器

    2、外部存储器主要用来存储程序(可执行代码),相当于电脑的硬盘。

    3、各种不同外部存储器原理不同,大小、性价比不同,一般产品厂家根据需要选择适合自己产品的外存使用。

    4、外部存储器和CPU连接一般不是通过地址&数据总线直接相连,因为地址空间不够用。一般都是通过专门的接口来连


            

    内存  
    SRAM

    静态内存

    特点是容量小、价格高,优点是不需要软件初始化直接上电就能用。
    DRAM动态内存特点是容量大、价格低,缺点是上电后不能直接使用,需要软件初始化后才可以使用。
    外存  
    NorFlash 特点是容量小、价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。
    NandFlash和硬盘一样特点是容量大、价格低,缺点是不能总线式访问,也就是说CPU上电后不可以直接读取,需要CPU运行一些初始化软件,然后通过时序接口读写。

    单片机中:内存需求量少,且希望开发尽量简单,适合全部使用SRAM;

    嵌入式中:内存需求量大,适合使用DRAM,在没有NorFlash等启动介质的情况下,还需要使用少量的SRAM;

    PC机中:内存需求量大,而且软件复杂,不在乎DRAM初始化的开销,适合全部用DRAM。


    PC机一般都是:很小容量的BIOS(NorFlash)+很大容量的硬盘(类似于NandFlash)+很大容量的DRAM;

    一般的单片机:很小容量的NorFlash+很小容量的SRAM

    嵌入式系统:因为NorFlash很贵,所以现在很多嵌入式系统不倾向于使用NorFlash,而是采用内置小容量SRAM+外接大容量的NandFlash+外接大容量的DRAM(我个人觉得还是内置了很小容量的NorFlash来初始化外接的NandFlash,并从NandFlash来获得初始化DRAM的代码,因为NandFlash的种类并不多,而DRAM的种类很多,当然了,这只是我从s5pv210开发板的启动过程推测来的,是否正确还有待考究)

    展开全文
  • 存储器的分类存储器是计算机的重要...⑵外部存储器外部存储器又叫外存,是辅助寄存器。外存的特点是容量大,所存的信息既可以修改也可以保存。存取速度较慢,要用专用的设备来管理。计算机工作时,一般由内存ROM中...

    存储器的分类

    存储器是计算机的重要组成部分之一,用来存储程序和数据,表征了计算机的“记忆”功能

    1.按用途分类

    ⑴内部存储器

    内部存储器又叫内存,是主存储器。用来存储当前正在使用的或经常使用的程序和数据。CPU可以对他直接访问,存取速度较快。

    ⑵外部存储器

    外部存储器又叫外存,是辅助寄存器。外存的特点是容量大,所存的信息既可以修改也可以保存。存取速度较慢,要用专用的设备来管理。

    计算机工作时,一般由内存ROM中的引导程序启动程序,再从外存中读取系统程序和应用程序,送到内存的RAM中,程序运行的中间结果放在RAM中,(内存不够是也可以放在外存中)程序的最终结果存入外部存储器。

    2.按存储器的性质分类

    ⑴RAM随机存取存储器(Random Access Memory)

    CPU根据RAM的地址将数据随机的写入或读出。电源切断后,所存数据全部丢失。按照集成电路内部结构不同,RAM又分为两类:

    ①SRAM静态RAM(Static RAM)

    静态RAM速度非常快,只要电源存在内容就不会消失。但他的基本存储电路是由6个MOS管组成1位。集成度较低,功耗也较大。一般高速缓冲存储器(Cache memory)用它组成。

    ②DRAM动态RAM(Dynamic RAM)

    DRAM内容在 或 秒之后自动消失,因此必须周期性的在内容消失之前进行刷新(Refresh)。由于他的基本存储电路由一个晶体管及一个电容组成,因此他的集成成本较低,另外耗电也少,但是需要刷新电路。

    ⑵ROM只读存储器(Read Only Memory)

    ROM存储器将程序及数据固化在芯片中,数据只能读出不能写入。电源关掉,数据也不会丢失。ROM按集成电路的内部结构可以分为:

    ①PROM可编程ROM(Programable ROM)

    存储器的分类

    存储器是计算机的重要组成部分之一,用来存储程序和数据,表征了计算机的“记忆”功能

    1.按用途分类

    ⑴内部存储器

    内部存储器又叫内存,是主存储器。用来存储当前正在使用的或经常使用的程序和数据。CPU可以对他直接访问,存取速度较快。

    ⑵外部存储器

    外部存储器又叫外存,是辅助寄存器。外存的特点是容量大,所存的信息既可以修改也可以保存。存取速度较慢,要用专用的设备来管理。

    计算机工作时,一般由内存ROM中的引导程序启动程序,再从外存中读取系统程序和应用程序,送到内存的RAM中,程序运行的中间结果放在RAM中,(内存不够是也可以放在外存中)程序的最终结果存入外部存储器。

    2.按存储器的性质分类

    ⑴RAM随机存取存储器(Random Access Memory)

    CPU根据RAM的地址将数据随机的写入或读出。电源切断后,所存数据全部丢失。按照集成电路内部结构不同,RAM又分为两类:

    ①SRAM静态RAM(Static RAM)

    静态RAM速度非常快,只要电源存在内容就不会消失。但他的基本存储电路是由6个MOS管组成1位。集成度较低,功耗也较大。一般高速缓冲存储器(Cache memory)用它组成。

    ②DRAM动态RAM(Dynamic RAM)

    DRAM内容在 或 秒之后自动消失,因此必须周期性的在内容消失之前进行刷新(Refresh)。由于他的基本存储电路由一个晶体管及一个电容组成,因此他的集成成本较低,另外耗电也少,但是需要刷新电路。

    ⑵ROM只读存储器(Read Only Memory)

    ROM存储器将程序及数据固化在芯片中,数据只能读出不能写入。电源关掉,数据也不会丢失。ROM按集成电路的内部结构可以分为:

    ①PROM可编程ROM(Programable ROM )

    将设计的程序固化进去,ROM内容不可更改。

    ②EPROM可擦除、可编程(Erasable PROM)

    可编程固化程序,且在程序固化后可通过紫外线光照擦除,以便重新固化新数据。

    ③EEPROM电可擦除可编程(Electrically Erasable PROM)

    可编程固化程序,并可利用电压来擦除芯片内容,以便重新固化新数据

    将设计的程序固化进去,ROM内容不可更改。

    ②EPROM可擦除、可编程(Erasable PROM)

    可编程固化程序,且在程序固化后可通过紫外线光照擦除,以便重新固化新数据。

    ③EEPROM电可擦除可编程(Electrically Erasable PROM)

    可编程固化程序,并可利用电压来擦除芯片内容,以便重新固化新数据。

    *博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

    展开全文
  • 存储器分类

    2020-01-03 14:29:24
    存储器一般来说可以分为内部存储器(内存),外部存储器(外存),缓冲存储器(缓存)以及闪存这几个大类。内存也称为主存储器,位于系统主机板上,可以同CPU直接进行信息交换。其主要特点是:运行速度快,容量小。外存也...

    存储器一般来说可以分为内部存储器(内存),外部存储器(外存),缓冲存储器(缓存)以及闪存这几个大类。
    内存也称为主存储器,位于系统主机板上,可以同CPU直接进行信息交换。其主要特点是:运行速度快,容量小。
    外存也称为辅助存储器,不能与CPU之间直接进行信息交换。其主要特点是:存取速度相对内存要慢得多,存储容量大。
    内存与外存本质区别是,一个是内部运行提供缓存和处理的功能,也可以理解为协同处理的通道;而外存主要是针对储存文件、图片、视频、文字等信息的载体,也可以理解为储存空间。
    缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
    闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位(注意:NOR Flash 为字节存储。),区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,闪存与EEPROM不同的是,EEPROM能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本程序)、PDA(个人数字助理)、数码相机中保存资料等。存储器的详细分类如下图所示:

    其中内存有多种不同的形式分别如下:
      RAM(Random Access Memory) 随机存储器。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。 按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。静态随机存储器SRAM(Static RAM)不需要刷新电路即能保存它内部存储的数据。除此以外,还有一种随机存储器SSRAM(Synchronous SRAM)即同步静态随机存取存储器。同步是指Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。对于SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。这一点与异步SRAM不同,异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。 动态随机存储器DRAM(Dynamic RAM)则每隔一段时间,要刷新充电一次,否则内部的数据即会消失。综上所述,SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,且功耗较大。所以在主板上SRAM存储器要占用一部分面积。SRAM的速率高、性能好,它常应用于CPU与主存之间的高速缓存以及CPU内部的L1/L2或外部的L2高速缓存。

      有一种动态随机存储器SDRAM(Synchronous DRAM)即同步动态随机存取存储器。同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写,DDR,DDR2以及DDR3就属于SDRAM的一类。SDRAM从发展到现在已经经历了五代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM,第五代,DDR4 SDRAM。第一代SDRAM采用单端(Single-Ended)时钟信号,第二代、第三代与第四代由于工作频率比较快,所以采用可降低干扰的差分时钟信号作为同步时钟。SDR SDRAM的时钟频率就是数据存储的频率,第一代内存用时钟频率命名,如PC100,PC133则表明时钟信号为100MHz或133MHz,数据读写速率也为100MHz或133MHz。之后的第二,三,四代DDR(Double Data Rate)内存则采用数据读写速率作为命名标准,并且在前面加上一个数字表示其DDR代数的符号,PC= DDR,PC2=DDR2,PC3=DDR3。如PC-2700是DDR-333,其工作频率是333/2=166MHz,2700表示带宽为2.7GB/s。DDR的读写频率从DDR-200到DDR-400,DDR2从DDR2-400到DDR2-800,DDR3从DDR3-800到DDR3-1600。DDR各种规格与传输标准如下表所示:

    传输速率的单位是MT/s(Mega Transfer Per Second),即每秒传输的百万次数,由于DDR一次传输64-bit,相当于8个字节(Byte),所以数据传输带宽为传输速率乘以8。上表中的核心频率指的是DDR芯片内部进行逻辑处理的时钟频率;传输速率的频率叫做传输频率或者等效频率,为了方便起见,后文同一称为等效频率,等效频率在数值上与传输速率相等,最后还有一个时钟频率是DDR芯片时钟引脚的频率,它称作DDR的工作频率。这三个频率的关系如下:

      工作频率=等效频率/2。因为DDR是利用时钟的上升沿与下降沿均传输数据,所以DDR芯片的工作频率(时钟引脚的频率)为等效频率(传输频率)的一半

      核心频率=等效频率/DDR的预取数。对于DDR来说,预取数为2;对于DDR2来说,预取数为4;对于DDR3来说,预取数为8。

      标准的DDR SDRAM分为DDR 200,DDR 266,DDR 333以及DDR 400,其标准工作频率分别100MHz,133MHz,166MHz和200MHz,对应的内存传输带宽分别为1.6GB/s,2.12GB/s,2.66GB/s和3.2GB/s,非标准的(某些厂家生产的超频内存)还有DDR 433,DDR 500等等。值得特别注意的是,初学者常被DDR 266,PC 2100等字眼搞混淆,在这里要说明一下,DDR 266与PC 2100其实就是一回事,只是表述方法不同罢了。DDR 266是指的该内存的传输速率(实际工作频率为133MHz,由于一个周期的上升沿与下降沿均可以用来传输数据,所以等效于266MHz 的SDRAM),而PC 2100则是指其内存传输带宽(2100MB/s)。同理,PC 1600就是DDR 200,PC 2700就是DDR-333,PC 3200就是DDR 400。

      DDR2以及DDR3可以看作是DDR技术标准的一种升级和扩展:DDR的核心频率与工作频率(这里的时钟频率指的是DDR芯片的时钟管脚)相等,但数据频率为时钟频率的两倍,也就是说在一个时钟周期内必须传输两次数据。而DDR2采用“4 bit Prefetch(4位预取)”机制,核心频率为传输频率的1/4,这样即使核心频率还为200MHz,DDR2内存的数据传输频率也能达到800MHz,也就是所谓的DDR2-800。DDR3采用“8 bit Prefetch(8位预取)”机制,这样DRAM的核心频率只有传输频率的1/8,所以DDR3-800的核心频率只有100MHz,如果核心频率为200MHz,DDR3内存的数据频率能达到1600MHz,数据传输频率为DDR2的两倍。

    三、 DDR3介绍

      DDR3 SDRAM(Double-Data-Rate   Synchronous Dynamic Random Access Memory)是应用在计算机及电子产品领域的一种高带宽并行数据总线,它属于上文提到的SDRAM类。DDR3 在 DDR2的基础上继承发展而来,其数据传输速度为 DDR2 的两倍。同时,DDR3 标准可以使单颗内存芯片的容量更为扩大,达到 512Mb 至 8Gb,从而使采用 DDR3 芯片的内存条容量扩大到最高 16GB。此外,DDR3 的工作电压降低为 1.5V,比采用 1.8V 的 DDR2省电 30%左右。说到底,这些指标上的提升在技术上最大的支撑来自于芯片制造工艺的提升,90nm 甚至更先进的 45nm 制造工艺使得同样功能的 MOS 管可以制造的更小,从而带来更快、更密、更省电的技术提升。DDR3 现今是并行 SDRAM 家族中速度最快的成熟标准,JEDEC 标准规定的 DDR3 最高速度可达 1600MT/s(注,1MT/s 即为每秒钟一百万次传输)。 不仅如此, 内存厂商还可以生产速度高于 JEDEC 标准的 DDR3 产品,如速度为2000MT/s 的 DDR3 产品,甚至有报道称其最高速度可高达 2500MT/s。

      DDR3相较于DDR2而言主要有如下几个特点:

      1.突发长度(Burst Length,BL):由于DDR3的预取为8bit,所以突发传输周期(Burst Length,BL)也固定为8,而对于DDR2和早期的DDR架构系统,BL=4也是常用的,DDR3为此增加了一个4bit Burst Chop(突发突变)模式,即由一个BL=4的读取操作加上一个BL=4的写入操作来合成一个BL=8的数据突发传输,届时可通过A12地址线来控制这一突发模式。而且需要指出的是,任何突发中断操作都将在DDR3内存中予以禁止,且不予支持,取而代之的是更灵活的突发传输控制(如4bit顺序突发)。

      2.寻址时序(Timing):就像DDR2从DDR转变而来后延迟周期数增加一样,DDR3的CL周期也将比DDR2有所提高。DDR2的CL范围一般在2~5之间,而DDR3则在5~11之间,且附加延迟(AL)的设计也有所变化。DDR2时AL的范围是0~4,而DDR3时AL有三种选项,分别是0、CL-1和CL-2。另外,DDR3还新增加了一个时序参数-写入延迟(CWD),这一参数将根据具体的工作频率而定。

      3.DDR3新增的重置(Reset)功能:重置是DDR3新增的一项重要功能,并为此专门准备了一个引脚。DRAM业界很早以前就要求增加这一功能,如今终于在DDR3上实现了。这一引脚将使DDR3的初始化处理变得简单。当Reset命令有效时,DDR3内存将停止所有操作,并切换至最少量活动状态,以节约电力。 在Reset期间,DDR3内存将关闭内在的大部分功能,所有数据接收与发送器都将关闭,所有内部的程序装置将复位,DLL(延迟锁相环路)与时钟电路将停止工作,而且不理睬数据总线上的任何动静。这样一来,将使DDR3达到最节省电力的目的。

      4.DDR3新增ZQ校准功能:ZQ也是一个新增的脚,在这个引脚上接有一个240欧姆的低公差参考电阻。这个引脚通过一个命令集,通过片上校准引擎(On-Die Calibration Engine,ODCE)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值。当系统发出这一指令后,将用相应的时钟周期(在加电与初始化之后用512个时钟周期,在退出自刷新操作后用256个时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。

      5.参考电压分成两个:在DDR3系统中,对于内存系统工作非常重要的参考电压信号VREF将分为两个信号,即为命令与地址信号服务的VREFCA和为数据总线服务的VREFDQ,这将有效地提高系统数据总线的信噪等级。

      6.点对点连接(Point-to-Point,P2P):这是为了提高系统性能而进行的重要改动,也是DDR3与DDR2的一个关键区别。在DDR3系统中,一个内存控制器只与一个内存通道打交道,而且这个内存通道只能有一个插槽,因此,内存控制器与DDR3内存模组之间是点对点(P2P)的关系(单物理Bank的模组),或者是点对双点(Point-to-two-Point,P22P)的关系(双物理Bank的模组),从而大大地减轻了地址/命令/控制与数据总线的负载。而在内存模组方面,与DDR2的类别相类似,也有标准DIMM(台式PC)、SO-DIMM/Micro-DIMM(笔记本电脑)、FB-DIMM2(服务器)之分,其中第二代FB-DIMM将采用规格更高的AMB2(高级内存缓冲器)。 面向64位构架的DDR3显然在频率和速度上拥有更多的优势,此外,由于DDR3所采用的根据温度自动自刷新、局部自刷新等其它一些功能,在功耗方面DDR3也要出色得多,因此,它可能首先受到移动设备的欢迎,就像最先迎接DDR2内存的不是台式机而是服务器一样。在CPU外频提升最迅速的PC台式机领域,DDR3未来也是一片光明。Intel所推出的新芯片-熊湖(Bear Lake),其将支持DDR3规格,而AMD也预计同时在K9平台上支持DDR2及DDR3两种规格。

      7.逻辑Bank数量:DDR2 SDRAM中有4Bank和8Bank的设计,目的就是为了应对未来大容量芯片的需求。而DDR3很可能将从2Gb容量起步,因此起始的逻辑Bank就是8个,另外还为未来的16个逻辑Bank做好了准备。

      8.封装(Packages):DDR3由于新增了一些功能,所以在引脚方面会有所增加,8bit芯片采用78球FBGA封装,16bit芯片采用96球FBGA封装,而DDR2则有60/68/84球FBGA封装三种规格。并且DDR3必须是绿色封装,不能含有任何有害物质。

      9.降低功耗:DDR3内存在达到高带宽的同时,其功耗反而可以降低,其核心工作电压从DDR2的1.8V降至1.5V,相关数据预测DDR3将比现时DDR2节省30%的功耗,当然发热量我们也不需要担心。就带宽和功耗之间作个平衡,对比现有的DDR2-800产品,DDR3-800、1066及1333的功耗比分别为0.72X、0.83X及0.95X,不但内存带宽大幅提升,功耗表现也比上代更好

      内存技术从SDR,DDR,DDR2,DDR3一路发展而来,传输速度以指数递增,除了晶圆制造工艺的提升因素之外,还因为采用了Double Data Rate以及Prefetch两项技术。实际上,无论是SDR还是DDR或DDR2、DDR3,内存芯片内部的核心时钟频率基本上是保持一致的,都是100MHz到200MHz(某些厂商生产的超频内存除外)。DDR即Double Data Rate技术使数据传输速度较SDR提升了一倍。如下图所示, SDR仅在时钟的上升沿传输数据,而DDR在时钟信号上、下沿同时传输数据。例如同为133MHz时钟,DDR却可以达到266Mb/s的数传速度

     

      Double Data Rate技术使数据外传速度提升了一倍,而芯片内部数据数据传输速度的提升则是通过Prefetch技术实现的。所谓Prefetch简单的说就是在一个内核时钟周期同时寻址多个存储单元并将这些数据以并行的方式统一传输到IO Buffer中,之后以更高的外传速度将IO Buffer中的数据传输出去。这个更高的速度在DDR中就是通过Double Data Rate实现的,也正因为如此,DDR芯片时钟管脚的时钟频率与芯片内部的核心频率是一致的。如下图所示为DDR的Prefetch过程中,在16位的内存芯片中一次将2个16bit数据从内核传输到外部MUX单元,之后分别在Clock信号的上、下沿分两次将这2 x 16bit数据传输给北桥或其他内存控制器,整个过程经历的时间恰好为一个内核时钟周期。

     

      发展到DDR2,芯片内核每次Prefetch  4倍的数据至IO Buffer中,为了进一步提高外传速度,芯片的内核时钟与外部接口时钟(即DDR芯片的Clock管脚时钟)不再是同一时钟,外部Clock时钟频率变为内核时钟的2倍。同理,DDR3每次Prefetch 8倍的数据,其芯片Clock频率为内核频率的4倍,即JEDEC标准(JESD79-3)规定的400MHz至800MHz,再加上在Clock信号上、下跳变沿同时传输数据,DDR3的数据传输速率便达到了800MT/s到1600MT/s。具体到内存条速度,我们以PC3-12800为例,其采用的DDR3-1600(上一小节已经提到过,PC3-12800和DDR3-1600其实是同一意思,只不过PC3-12800指的是DDR的传输带宽为12800MB/s,而DDR3-1600指的是传输频率为1600MHz)芯片核心频率为200MHz,经过Prefetch后在800MHz Clock信号工作频率的双边沿(Double Data Rate)作用下,使芯片的数据传输速率为1600 MT/s,内存条每次传输64比特或者说8字节数据,1600x8便得到12800MB/s的峰值比特率。

      下表列出了JEDEC标准(JESD79-3)规定的DDR3芯片以及内存条相关参数。需要说明的是,如前所述,并不是所有的内存产品都完全遵从JEDEC标准,有些厂家会生产速度更高速的DDR3芯片,一般情况下这些芯片是从芯片检测流程中筛选出来的频率动态范围更大的芯片,或者是可加压超频工作的芯片。

     

    名称

    核心频率

    核心时钟周期

    Clock管脚时钟频率

    数据传输速率

    对应内存条名称

    内存条峰值比特率

    DDR3-800

    100MHz

    10ns

    400MHz

    800MT/s

    PC3-6400

    6400MB/s

    DDR3-1066

    133MHz

    7.5ns

    533MHz

    1066MT/s

    PC3-8500

    8533MB/s

    DDR3-1333

    166MHz

    6ns

    667MHz

    1333MT/s

    PC3-10600

    10667MB/s

    DDR3-1600

    200MHz

    5ns

    800MHz

    1600MT/s

    PC3-12800

    12800MB/s


      注意:Clock管脚时钟频率就是上一小节提到的DDR的工作频率

      最后,在了解了DDR的上面基础知识的前提下,下表列出了不同DDR芯片的相关特性:

    SDRAM器件比较

    条目

    DDR3 SDRAM

    DDR2 SDRAM

    DDR SDRAM

    Clock管脚时钟频率(工作频率)

    400/533/667/800 MHz

    200/266/333/400 MHz

    100/133/166/200 MHz

    数据传输速率

    800/1066/1333/1600 MT/s

    400/533/667/800 MT/s

    200/266/333/400 MT/s

    预取(Prefetch)位宽

    8-bit

    4-bit

    2-bit

    输入时钟类型

    差分时钟

    差分时钟

    差分时钟

    突发长度(Burst Length)

    8, 4(突发突变)

    4,8

    2,4,8

    数据选通信号类型

    差分数据选通

    差分数据选通

    单端数据选通

    电源电压

    1.5V

    1.8V

    2.5V

    数据电平标准

    SSTL_15

    SSTL_18

    SSTL_2

    CAS Latency(CL)

    5,6,7,8,9时钟

    3,4,5时钟

    2,2.5,3时钟

    片内终端电阻(ODT)

    支持

    支持

    不支持

    芯片封装

    FBGA

    FBGA

    TSOP(II)/FBGA/LQFP

     

    四、 DDR3的工作原理

      DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格,如下图所示。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑 Bank(Logical Bank,下面简称Bank,与之对应的还有一种叫做物理BANK)。

     

    BANK编号(B)

    列地址(C)

    0

    1

    2

    3

    4

    5

    6

    7

     

     

    (R)

    0

     

     

     

     

     

     

     

     

    1

     

     

     

     

     

     

     

     

    2

     

     

     

     

     

     

     

     

    3

     

     

     

     

     

     

     

     

    4

     

     

     

     

     

     

     

     

    5

     

     

     

     

     

     

     

     

    6

     

     

     

     

     

     

     

     

    7

     

     

     

     

     

     

     

     

     

      DDR3内部的BANK可以看做是一个NxN的一个阵列,B代表Bank编号,C代表列地址编号,R代表行地址编号。如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置。

      目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。寻址的流程也就是先指定Bank地址,再指定行地址,然后指定列地址最终的确寻址单元。

      对DDR3系统而言,还存在物理Bank的概念,这是对内存子系统的一个相关术语,并不针对内存芯片。内存为了保证CPU正常工作,必须一次传输完CPU 在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称为物理Bank(Physical Bank,有的资料称之为Rank)的位宽。目前这个位宽基本为64bit。

      在实际工作中,逻辑Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以核心时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定。以DDR3-800为例,通过上一节的学习可知,DDR3-800的数据传输频率(等效频率)为800MHz,由于DDR3的预取(Prefetch)位宽为8位,所以核心频率为100MHz(800MHz/8),核心时钟的周期为10ns,如果tRCD=3,则表示延时为30ns。

     

      上图是tRCD=3的时序图,NOP=Not Operation,表示无操作,灰色区域表示Don’t Care。

      接下来,相关的列地址被选中以后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的I/O接口之间还需要一定的时间(数据触发本身就有延时,而且还需要进行信号放大),这段时间就是列地址脉冲选通潜伏期(CAS Latency,CL),CL的数值与tRCD一样,以时钟周期数表示。比如DDR3-800的有效频率(传输数据频率)为800MHz,由于DDR3的预取数为8,所以核心频率为100MHz,核心周期为10ns,如果CL=2,那么就意味着列地址脉冲选通潜伏期为20ns。CL只针对读取操作有效。

      由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由Sense Amplifier负责,一个存储体对应一个Sense Amplifier通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据到数据输出之前的一个时钟上升沿开始,数据即已传向Sense Amplifier,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为tAC(Access Time from CLK,时钟触发后的访问时间)。

    Sense Amplifier在DDR结构中扮演的角色如下所示

      tAC和CAS的示意图如下图所示

      目前内存的读写基本都是连续的,因为与CPU交换的数据量以一个Cache Line(即CPU内Cache的存储单位)的容量为准,一般为64字节。而现有的Rank位宽为8字节(64bit),那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。

      在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一组数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。下图是CAS=2,BL=4时的时序图

     

      突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。

      谈到了突发长度时。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二组数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM 信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。

      在数据读取完之后,为了腾出读出放大器以供同一Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个Bank示意图为例。当前寻址的存储单元是B1、R2、C6。如果接下来的寻址命令是B1、R2、C4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址命令是B1、R4、C4,由于是同一Bank的不同行,那么就必须要先把R2关闭,才能对R4寻址。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。

      整个充电的步骤如下图所示

      在不同Bank间读写也是这样,先把原来数据写回,再激活新的Bank/Row。

      数据选取脉冲(DQS)

      DQS 是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。

      在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS 的导入期。

      DQS 在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,如果以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。

      DDR的写时序的时序图如下图所示

     

      DDR的读时序的时序图如下图所示

      

      由上面的时序图可知,在写时序中,有效数据DQ的正中间正好对应DQS的跳边沿,而在读时序中,有效数据的正中间对应着DQS信号的正中间。

      最后在简单说一说DDR中采用的ODT(On-Die Termination)技术。

      ODT(On-Die Termination),是从DDR2 SDRAM时代开始新增的功能。其允许用户通过读写DDR2/3内部的MR1寄存器,来控制DDR3 SDRAM中各个信号内部终端电阻的连接或者断开。在DDR3 SDRAM中,ODT功能主要应用于:

      1、DQ, DQS, DQS# and DM for X4 configuration

      2、DQ, DQS, DQS#, DM, TDQS and TDQS# for X8 configuration

      3、DQU, DQL, DQSU, DQSU#, DQSL, DQSL#, DMU and DML for X16 configuration

      ODT(On-Die Termination)技术的目的是通过使DDR SDRAM控制器能够独立的打开或者关断DDR内部的终端电阻来提高存储器通道的信号完整性,在DLL关闭模式,ODT功能被禁用。

      一个DDR通道,通常会挂接多个Rank,这些Rank的数据线、地址线等等都是共用;数据信号也就依次传递到每个Rank,到达线路末端的时候,波形会有反射,从而影响到原始信号;因此需要加上终端电阻,吸收余波。之前的DDR,终端电阻做在板子上,但是因为种种原因,效果不是太好,到了DDR2,把终端电阻做到了DDR颗粒内部,也就称为On Die Termination,Die上的终端电阻,Die是硅片的意思,这里也就是DDR颗粒。

      ODT技术具体的内部结构图如下:

      等效结构如下图所示

      ODT终端电阻的电阻值RTT可通过模式寄存器MR1的A9,A6,A2来进行设置,设置的真值表为:

      总的来说,ODT技术有以下三个优点:

      1、去掉了主板上的终结电阻器等电器元件,这样会大大降低主板的制造成本,并且也使主板的设计更加简洁。

      2、由于ODT技术可以迅速的开启和关闭空闲的内存芯片,在很大程度上减少了内存闲置时的功率消耗。

      3、芯片内部终结电阻也要比主板的终端电阻具有更好的信号完整性。这也使得进一步提高DDR2内存的工作频率成为可能。

    五、 总结

      本文大致介绍了DDR3的一些基本信息,总结下来主要有以下几个关键信息是值得关注的。

      1、DDR核心频率,工作频率以及有效频率的关系

      2、DDR采用的预取(Prefetch)技术

      3、DDR的Burst Length(BL)的概念

      4、DDR对一行操作完毕以后如果下一次的操作在不同的行,那么需要有一个预充电(Precharge)的过程

      5、数据掩码(DQM)技术的作用是用来屏蔽不想接收的数据

      6、数据选通信号(DQS)与有效数据的关系

      7、ODT(On-Die Termination)技术可以提高DDR信号完整性

    六、 参考资料

      1、ODT技术:https://blog.csdn.net/weixin_38233274/article/details/81016870

      2、DDR3原理:http://www.360doc.com/content/17/0628/10/43885509_667136417.shtml

      3、DDR3原理:https://wenku.baidu.com/view/95574828d1f34693dbef3e39.html

      4、DDR3原理:https://wenku.baidu.com/view/0b1b0c795fbfc77da369b1b1.html

      5、DDR芯片原理:http://blog.chinaunix.net/uid-20671208-id-4470548.html

      6、DDR传输速率:https://wenku.baidu.com/view/342ed68f360cba1aa811dabf.html

      7、DDR三个频率关系:https://www.cnblogs.com/shengansong/archive/2012/09/01/2666213.html

      8、DDR3三个频率关系:https://electronics.stackexchange.com/questions/134555/why-all-ddrs-ddr-ddr2-ddr3-internal-clock-sets-to-20

    展开全文
  • 它是一种外部存储器,多用于照相机、音乐播放器、手机等设备(如SD卡,Secure Digital Memory Card)。现在的游戏卡一般都是闪存。U盘用的也是快闪技术。另外,快闪存储器也在作为磁盘存储器的替代品越来越多地被...
  • 存储器分类

    千次阅读 2019-06-20 10:15:54
    存储器的分类 存储器是计算机的重要组成部分之一,用来存储...外部存储器又叫外存,是辅助寄存器。外存的特点是容量大,所存的信息既可以修改也可以保存。存取速度较慢,要用专用的设备来管理。 计算机工作时,一般...
  • 计算机存储器分类

    千次阅读 2020-01-14 16:36:00
    计算机存储器分为两大类:内存存储器和外部存储器(简称内存或内存条和外存)。 内存容量小,存取速度快,只能临时保存信息(经cup处理后的数据),断电后信息就会消失。 外存容量大,存取速度比内存慢,能永久...
  • 常用存储器分类

    2019-10-03 11:41:01
    1.存储器是计算机实现记忆功能的部件,用来存放程序和数据,是微机系统中重要的组成部分,存储器的容量越大,表明能存储的信息越多,计算机的处理能力也就...内存储器分类如下: 2.RAM,“Random Access Mem...
  • 描述存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如...
  • 存储器

    2020-03-29 14:51:47
    存储器概述存储器分类按存储介质分类按存取方式分类按在计算机中的作用分类存储器的层次结构存储器三个主要特征的关系2. 缓存 主存层次和主存 辅存层次主存储器概述主存的基本组成主存和CPU的关系主存中存储单元地址...
  • 描述内存储器内存又称为内存储器,通常也泛称为主存储器,是...内存储器(Memory)也被称为内存,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的...
  • 行业分类-设备装置-串行存储器装置向外部主机通知内部自计时操作的完成.zip
  • 存储器分类存储器介质分类 按存储方式分类 按在计算机中的作用分类 存储器的层次结构 如图,存储系统层次结构主要体现在缓存-主存和主存-辅存这两个存储层次上。 CPU和缓存、主存都能直接交换信息;缓存能...
  • CUDA 存储器种类分析及使用方法指南

    千次阅读 2011-05-23 22:30:00
    寄存器 局部存储器 共享存储器 全局存储器 主机端内存 主机端页锁定内存 常数存储器 纹理存储器 存储器位置拥有缓存访问权限变量生存周期registerGPU (芯)片内N/Adevice 可读/写与thread相同local memory板...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,950
精华内容 10,380
关键字:

外部存储器的种类