存储器

C:指针基础

夙愿已清 提交于 2020-01-29 01:18:03
内存概述 内存 内存含义: 存储器:计算机的组成中,用来存储程序和数据,辅助CPU进行运算处理的重要部分。 内存:内部存贮器,暂存程序/数据——掉电丢失 SRAM、DRAM、DDR、DDR2、DDR3。 外存:外部存储器,长时间保存程序/数据—掉电不丢ROM、ERRROM、FLASH(NAND、NOR)、硬盘、光盘。 内存是沟通CPU与硬盘的桥梁: 暂存放CPU中的运算数据 暂存与硬盘等外部存储器交换的数据 物理存储器和存储地址空间 有关内存的两个概念:物理存储器和存储地址空间。 物理存储器:实际存在的具体存储器芯片。 主板上装插的内存条 显示卡上的显示RAM芯片 各种适配卡上的RAM芯片和ROM芯片 存储地址空间:对存储器编码的范围。我们在软件上常说的内存是指这一层含义。 编码:对每个物理存储单元(一个字节)分配一个号码 寻址:可以根据分配的号码找到相应的存储单元,完成数据的读写 内存地址 将内存抽象成一个很大的一维字符数组。 编码就是对内存的每一个字节分配一个32位或64位的编号(与32位或者64位处理器相关)。 这个内存编号我们称之为内存地址。 内存中的每一个数据都会分配相应的地址: char:占一个字节分配一个地址 int: 占四个字节分配四个地址 float、struct、函数、数组等 指针基础 指针和指针变量 内存区的每一个字节都有一个编号,这就是“地址”。

标准SPI、DUAL SPI、Quad SPI;NorFlash、NandFlash、eMMC闪存的比较与区别

泪湿孤枕 提交于 2020-01-29 01:04:49
标准SPI 标准SPI通常就称SPI,它是一种串行外设接口规范,有4根引脚信号:clk , cs, mosi, miso Dual SPI 它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flash,全双工并不常用,因此扩展了mosi和miso的用法,让它们工作在半双工,用以加倍数据传输。也就是对于Dual SPI Flash,可以发送一个命令字节进入dual mode,这样mosi变成SIO0(serial io 0),mosi变成SIO1(serial io 1),这样一个时钟周期内就能传输2个bit数据,加倍了数据传输 Qual SPI 与Dual SPI类似,也是针对SPI Flash,Qual SPI Flash增加了两根I/O线(SIO2,SIO3),目的是一个时钟内传输4个bit 所以对于SPI Flash,有标准spi flash,dual spi , qual spi 三种类型,分别对应3-wire, 4-wire, 6-wire,在相同clock下,线数越多,传输速率越高。 btw:spi flash一般为NOR Flash 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。这种科技主要用于一般性数据存储,以及在电脑与其他数字产品间交换传输数据,如储存卡与U盘

第七周

僤鯓⒐⒋嵵緔 提交于 2020-01-28 04:56:04
第六章,存储器层次结构 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。 局部性是计算机程序的一个基本属性。 存储器山:一种描绘某台机器上存储器层次结构的性能的方法。 6.1 存储技术 6.1.1 随机访问存储器(RAM) 分为两类:①静态(SRAM)      ②动态(DRAM) ①SRAM将每个位存储在一个双稳态存储器单元里。它可以无限期地保存在两个不同的电压配置或状态之一。 ②DRAM将每个位存储为对一个电容的充电。它对干扰非常敏感。 ③传统的DRAM ④存储器模块 168引脚的双列直插存储器模块,64位;72引脚的单列直插存储器模块,32位。 ⑤增强的DRAM(快页模式、扩展数据输出、双倍数据速率同步、同步、Rambus、视频) ⑥非易失性存储器 RAM断电即丢失他们的信息,他们是易失的,所以有ROM只读存储器。 ⑦访问主页 数据流通过总线在处理器和DRAM主存之间来来回回,分为总线事物、读事物、写事物。 6.1.2 磁盘存储 磁盘是广为应用的保存大量数据的存储设备。 ①磁盘构造 盘片构成,每个盘片分为两面或叫表面,覆盖着磁性记录材料。盘中央是一个可以旋转的主轴,它让盘片以固定的旋转速率旋转。 每个表面由磁道组成,我们通常说的磁盘是指磁盘驱动器整个装置。 ②磁盘容量 一个磁盘上可以记录的最大位数 ③磁盘操作 磁盘用读写头来读写存储在磁性表面的位。(寻道时间

数据结构与算法概要

廉价感情. 提交于 2020-01-27 22:25:34
数据结构 + 算法 = 程序 数据结构 就是关系(数据元素相互之间存在一种或多种特定关系的集合),包括:   1.逻辑结构       集合结构: 元素同属一个集合,但无关联。      线性结构: 元素之间是一对一的关系,连成线,每个元素是一个节点。      树形结构: 一对多的层次关系。      图形结构: 多对多。   2.物理结构   定义:研究如何把数据元素(后简称元素)存储到计算机的存储器中。   存储器是主要 针对内存 而言的,像硬盘、软盘、光盘等外部存储器的数据组织通常用 文件结构 来描述。   元素的存储形式有两种: 顺序存储 和 链式存储 。     顺序存储结构:元素存放在地址连续的存储单元,数据间的逻辑关系和物理关系一致。     链式存储结构:元素存放在任意的存储单元,不一定连续,不能反映逻辑关系,需要用一个指针存放元素地址,通过地址找元素位置。 算法 五个基本特性: 输入 、 输出 、 有穷性 、 确定性 和 可行性 。(有没有输入都可以,但必须有输出;无二义; 每步都可实现)  另:操作系统普遍存在缓冲区溢出现象 要求: 正确性 (1.无语法错误;2.合法输入可产生满足要求的输出;3.非法输入可产生满足规格的说明;4.故意刁难的测试输入有满足要求的输出结果)、 可读性  、 健壮性 、 时间效率高和存储量低 。   来源: https://www

汇编语言学习笔记(2)

南楼画角 提交于 2020-01-26 17:28:11
文章目录 汇编语言的组成: 指令和数据 CPU对存储器的读写 各类存储器芯片 内存地址空间 小结 汇编语言的组成: 1、汇编指令:机器码的助记符,有对应的机器码 2、伪指令:没有对应的机器码,由编译器执行,计算机并不执行 3、其他符号:由编译器识别,没有对应的机器码 指令和数据 指令和数据是应用上的概念。在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。 CPU对存储器的读写 CPU要想进行数据读写,必须和外部器件进行下面三类信息交互 存储单元的地址(地址信息) 器件的选择,读或写的命令(控制信息) 读或写的数据(数据信息) 总线从逻辑上分为3类,地址总线、控制总线和数据总线。 各类存储器芯片 存储器芯片从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM) 从功能和连接上又可以分为以下几类。 随机存储器 装有BIOS的ROM 接口卡上的RAM 内存地址空间 CPU在操纵各类存储器的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。 小结 1、汇编指令是机器指令的助记符,同机器指令一一对应 2、每一种CPU都有自己的汇编指令集 3、CPU可以直接使用的信息在存储器中存放 4、在存储器中指令和数据没有任何区别,都是二进制信息 5、存储单元从零开始顺序编号 6、一个存储单元可以存储8个bit

SDRAM(1):基本介绍

倖福魔咒の 提交于 2020-01-25 13:24:01
一、存储器类型   1、RAM,随机存取存储器(Random Access Memory),也叫主存, 是与 CPU 直接交 换数据的内部存储器。可按地址进行读写,掉电后数据会丢失。 (1)DRAM:动态RAM,使用电容的电量来表示逻辑 0 和 1,电容充放电的特性导致其需要不断的刷新来保证数据不丢失。存储容量较大,多用于数据存储。常见的有 SDRAM 和 DDR。 (2)SRAM:静态RAM,使用触发器的两个稳定状态来表示逻辑 0 和 1,不需要刷新操作。存储容量一般较小,但读写速度快。   2、ROM,只读存储器(Read Only Memory),数据只能读出而不能写入,掉电后数据不丢失。数据写入需要特定条件,数据存取慢。 (1)PROM:可编程ROM,出厂后可修改内部数据,但只能修改一次。多用于存储不修改的数据,如设备ID,制造厂商编码。 (2)EEPROM:电子可擦除的ROM,内部数据可以反复进行修改。多用于掉电后扔需存储的数据。   3、Flash,快闪存储器(Flash Memory),可读可写,掉电后数据不丢失,数据存取快。 (1)NOR FLASH:容量小,读写速度快,程序可以在里面直接运行。 (2)NAND FLASH:容量大,读写速度慢,数据以块的形式读写,一般为 512 Byte,不能对单独的字节进行操作。 二、SDRAM简介   SDRAM 全程是

计算机与操作系统与网络原理--3

谁说胖子不能爱 提交于 2020-01-25 12:17:03
冯诺依曼体系 将程序指令和数据一起存储的计算机设计概念结构 早期: 仅用于固定的程序运行. 例如: 只能运行文本处理程序 需要运行别的程序的话,需要更改程序结构,重新设计电路. 在组装成为计算机 冯诺依曼体系: 存储程序指令,设计通用电路. 结构 存储器 控制器 运算器 输入/输出设备 现代计算机都是冯诺依曼计算机 功能 能够把需要的程序和数据送至计算机中 长期记忆程序,数据,中间结果以及最终的运算结果的能力 具备算术,逻辑运算,数据传送等数据加工处理的能力 CPU = 运算器 + 控制器 CPU和存储器之间的速率无法调和.导致CPU空转,等待数据传输. 现代计算机结构 在冯诺依曼体系上发展而来 现代计算机将存储器纳入CPU核心. 是CPU的一部分. 存储器本质为 存储数据的介质. 慢速的存储介质为:磁带,硬盘. 而CPU则要求告诉的存储设备:比如内存,和寄存器. 来源: CSDN 作者: 路上^_^ 链接: https://blog.csdn.net/DXH9701/article/details/104082705

计算机硬件

只谈情不闲聊 提交于 2020-01-24 06:55:28
计算机硬件   基本的计算机硬件系统由运算器、控制器、存储器、输入设备、输出设备5大部件构成。   随着网络技术的发展和应用,通信部件也已成为计算机系统的基本组件。 CPU   运算器和控制器已被集成在一起,统称为 中央处理单元 ( CPU,Central Processing Unit ), CPU 是硬件系统的核心,用于数据的加工处理,完成各种算术运算、逻辑运算和控制功能。 运算器   运算器是对数据进行加工处理的部件,主要完成算术运算和逻辑运算。   运算器的核心元件是算术逻辑单元 ALU(Arithmetic And Logic Unit) 。 控制器   控制器的主要功能是从主存储器中取出指令并进行分析,控制计算机的各个部件有条不紊的完成指令的运行。   主要功能如下:   1.正确执行每条指令。首先是获得一条指令,分析指令,按指令格式和功能执行这条指令。   2.保证指令按规定顺序自动连续的执行。   3.对各种异常情况和请求及时响应与处理。 输入/输出设备   输入/输出设备是计算机系统与外界交换信息的装置,一般通过总线和接口将主机与I/O设备有机地组合在一起。 存储器   存储器是计算机系统的记忆设备,分为内部存储器( Main Memory,MM ,简称内存、主存)和外部存储器(简称外存、辅存)。 内存   内存速度快、容量小

深入理解计算机系统(5.1)------优化程序性能

有些话、适合烂在心里 提交于 2020-01-24 04:56:09
  你能获得的对程序最大的加速比就是当你第一次让它工作起来的时候。   在讲解如何优化程序性能之前,我们首先要明确写程序最主要的目标就是使它在所有可能的情况下都能正常工作,一个运行的很快的程序但是却是错误的结果是没有任何用处的,所以我们在进行程序性能优化之前,首先要保证程序能正常运行,且结果是我们需要的。   而且在很多情况下,让程序跑的更快是我们必须要解决的问题。比如一个程序要实时处理视频帧或者网络包,那么一个运行的很慢的程序就不能解决此问题。再比如一个计算任务计算量非常大,需要数日或者数周,如果我们哪怕只是让它运行的快20%也会产生重大影响。 1、编写高效程序的切入点   ①、选择一组合适的算法和数据结构。   ②、编写出编译器能够有效优化以转换成高效可执行的源代码。   ③、多线程并行处理运算。   对于第一点,程序=数据结构+算法,选择合适的数据结构和算法无疑对于提高程序的运行效率有很大的影响。第二点对于编程者则需要理解编译器的优化能力以及局限性,编写程序看上去只是一点小小的改动,可能都会引起编译器优化方式很大的变化;第三点技术主要这对运算量特别大的运算,我们将一个大的任务分成多个小任务,这些任务又可以在多核和多处理器的某种组合上并行的计算,这里我们也需要知道,即使是利用并行性,每个并行的线程都要以最高性能的方式执行。 2、编译器的优化能力和局限性   正确性,正确性

5.1 CUDA atomic原子操作

只谈情不闲聊 提交于 2020-01-24 03:45:55
和许多多线程并行问题一样,CUDA也存在互斥访问的问题,即当一个线程改变变量X,而另外一个线程在读取变量X的值,执行原子操作类似于有一个自旋锁,只有等X的变量在改变完成之后,才能执行读操作,这样可以保证每一次读取的都是最新的值. 在kernel 程序中,做统计累加,都需要使用原子操作:atomicAdd(); 原子操作很明显的会影响程序性能,所以可以的话,尽可能避免原子操作. CUDA原子操作API: C.1.1 atomicAdd() int atomicAdd(int* address, int val); unsigned int atomicAdd(unsigned int* address, unsigned int val); unsigned long long int atomicAdd(unsigned long long int* address, unsigned long long int val); 读取位于全局或共享存储器中地址address 处的32 位或64 位字old,计算(old + val),并将结果存储在存储器的同一地址中。这三项操作在一次原子事务中执行。该函数将返回old。 只有全局存储器支持64 位字。 C.1.2 atomicSub() int atomicSub(int* address, int val); unsigned int