微机原理 笔记(1)

1.机器数的原码,反码和补码

原码
机器数的最高位用“0”表示“+”号,用“1”表示“-”号
X1=69 [X1]原=01000101
X2=-69 [X2]原=11000101
反码
如果是正数,反码和原码相同;如果是负数,其反码为原码的数值部分按符号位保持不变
X1=69 [X1]反=01000101
X2=-69 [X2]反=10111010
数值0反码有两种形式
[+0]反=00000000 [-0]反=11111111
补码
负数的补码等于它的绝对值按位取反后加1
X1=69 [X1]补=01000101
X2=-69 [X2]补=10111010+1=10111011

2.微型计算机的组成

微型计算机由CPU,储存器,输入/输出接口和系统总线组成
CPU俗称中央处理器
储存器包括随机存储器(RAM)和只读存储器(ROM) ROM一般储存出场代码 无法修改 能掉电保存 RAM用来保存正在运行的程序数据 掉电不能保存
补充:
RAM
RAM又被称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。当电源关闭时RAM不能保留数据(掉电数据消失哦)如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。
RAM分为很多种,关于SRAM、DDR、SDRAM、PSRAM,本文从软件的角度笼统一点,分为片内和片外ram。对于软件工程师的来说,它们的区别就是访问速度,大体上片内的访问速度是片外RAM的1.5~2倍。片内ram集成在CPU芯片内部,它是在CPU设计时就加上的,它使用和CPU几乎一样的制作工艺和材料,而且增加了芯片的大小,所以成本比较高,一般也就只有几十K字节,好钢当然要用在刀刃上,片内ram用来存放中断处理handler、RTOS调度器、任务上下文切换、内存分配释放等使用频率最高的代码和中断堆栈这种读写频率极高的内存区,如果有多余的部分也可以放一些经常被引用到的全局变量。片外RAM一般就是采购的市面上的成品,如Samsung,Hynix,Apmemory等,价格相对便宜,其容量的可选范围也较为宽松,从几M到几G的都有,它可以用来存储全局变量,bss,以及我们常用到的malloc所分配的堆空间等。

ROM
ROM又被称为“只读存储器”,ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。
RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。
RO段应该放在ROM里,DATA段放在RAM里云云。对于DATA、BSS,这些段因为有频繁的写操作,所肯定要放到RAM里,但是只读数据(包括代码段)必须放在ROM里吗?答案是不一定。
ROM一般是有两种,一种是指集成在CPU芯片内部的一块只读存储区域,一般是几K到几十K字节大小,用来存储系统刚上电时对cpu和一些核心外设(如时钟,串口,MMU、DRAM、Flash等)进行初始化的代码,它在程序运行中也是不可写的,要对它执行写操作只能使用硬件烧写器进行,也就是一般所说的下载程序,这部分的代码在芯片测试阶段可以进行编程器下载更新,量产后一般就会固化,不能做任何修改的;
ROM另一种指的就是flash。首先需要说明的是,很多做嵌入式应用开发的同学一直把flash比作PC上的硬盘,其实它们指的是Nand flash,而对于很多小型的嵌入式系统,就只有一个2M或者4M的Nor Flash,它和硬盘有一个显著的区别:flash里存放的代码是可以由CPU直接取指并执行的,而PC上硬盘里的程序都需要加载到内存里才能运行。flash并不是绝对的运行时不可写,有时候应用程序需要保存一些配置信息到flash里,类似于PC程序的配置文件,以保证掉电了之后它的内容不会丢失,下次开机时可以直接从flash读取到。不过,flash的写操作要比RAM麻烦的多了,flash在写之前需要发送多个命令字来握手,还要先对即将要写的地址所在的扇区进行整体擦除,就是把该扇区里的内容全设为1,所谓写flash就是把其中的一些bit设为0;更要命的是,flash的每个独立bit位的写次数是有上限的,市面上大部分的产品都只能写10~100万次。多说一句,每个bit位的寿命是独立的,如果一个bit位在擦除和写的动作中,它的值始终为1,则不会有影响;例如反复对一个地址写0xF0,则不会影响高4bit的寿命,而低4bit每次都要先擦成1,再写入0,这样就会降低其寿命。
目前Flash主要有两种NOR Flash和NADN Flash。NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势)
首先考虑一下,有没有什么东西必须放在ROM里? 当然有,引导程序(系统的初始化代码)就必须放到ROM里。在CPU刚上电时,只能去一个默认的地址去取第一条指令,开始干活,这个地址都是映射到片内的ROM里,原因很简单,此时,作为外设的flash和DDR等都还没有初始化,CPU根本无法从它们那里读写数据,片内ROM里的这些代码就需要完成这些模块的初始化。另外,一个项目的处理器和主要外设确定了以后,这部分初始化代码在很长的时间里,都不需要做任何修改的。
那有没有什么东西必须放RAM里?当然也有,应用程序经常读写的全局变量,堆、栈等等,都需要放在RAM里,根据访问的频率,将频率最高的少量数据放到片内ram。
只读数据(代码段、程序里的const、字符串等)一般来说,这些数据应该放在Flash里,因为它们不需要被修改,而且前面提到过,rom要比ram便宜的多。可能有人会有疑问,放在flash里,会不会读取的速度很慢?读ROM的速度是比读RAM的数据要慢一点,但是不要忘了,现代CPU都有强大的cache,而且数据Dcache和指令Icache都是分开的,在系统运行中,cache的命中率可以高达80~90%,所以大部分时候CPU都可以在第一时间就拿到想要的指令和数据。
那么小诺的结论就出来啦:
1、RAM与ROM其实都是内存
2、硬盘是外存
3、ROM不等于硬盘
4一般而言 数据放RAM代码放ROM。(这里多说一句,RAM在系统刚上电的时候,其内容是随机的。所谓的数据、代码放在RAM里,是指在初始化时,CPU从flash里读下载的bin文件,也有的平台下载的是hex文件,找出其中的ram段,以类似于memcpy的方式将数据从bin文件里的对应位置拷贝到RAM映射到的物理地址里,这才是所谓的放在RAM里)
I/O接口电路
用来连接外部设备和微型机相连

3.微型处理器cpu的组成
(1)算术逻辑单元ALU

算术逻辑单元(ALU)是中央处理器CPU的一部分,用以处理计算机指令集中的算术与逻
辑操作。在某些处理器中将ALU分为两部分,即算术单元(AU)与逻辑单元(LU)。

(2)累加器ACC

累加器ACC是一个寄存器,是CPU中工作最繁忙的寄存器。许多指令的操作数取自ACC,
许多运算中间结果也存放于ACC。ACC中的数据还可以根据需要进行左右移位,使用非常灵活。

(3)标志寄存器FR

标志寄存器是所有处理器的一个重要部件。它是用来存放运算结果特征的,以便于判断
CPU的运行状态。不同的处理器的标志寄存器的位定义不尽相同。

(4)程序计数器PC

程序计数器是用于存放下一条指令地址的地方,通常又称为指令计数器。在程序开始执行
前,必须将要运行程序的起始地址送入PC,当执行指令时,CPU将自动修改PC的内容。

(5)指令寄存器IR

指令寄存器IR是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存取到
数据寄存器(DR)中,然后再传送至指令寄存器IR保存,供CPU分析并发出相应的控制信号。

4.FLASH储存器

FLASH 存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
Flash 存储器根据其内部架构和实现技术可以分为AND , NAND , NOR , NiNOR 几种,目前占据主流市场的有 NO R Flash和 NAND Flash两大类。NOR Flash 由 Intel 公司于1988 年最初推出。为了提高容量价格比, 东芝公司于 1989 年推出NANDFlash 。
两种 Flash 技术各有优、缺点以及各自适用的场合 。NOR Flash 和 NAN D Flash都将存储单元组织为块阵列 。块是擦除操作的最小单位,擦除操作将块内所有的位置为“1”。页是读、写操作的基本单位。在对页进行写操作(也叫编程操作)之前需要判断该页内所有的位是否为“1”。如果全部为“1”,则可以进行写操作;否则,需要先对整块进行擦除操作。
NAND Flash 的页大小通常为512B , 2 KB , 4 KB ,而NOR Flash能够以字节为单位进行数据访问。NANDFlash 的一个块通常 包括 32 , 64 或128 个页。在NAND Flash中 ,每个页包含数据区和带外区两部分。数据区存储用户数据, 带外区存储 ECC(erro rcorrecting codes),地址映射信息等用于Flash 存储管理的信息, 对应的大小通常为512 B 32 B , 2 KB 64 B , 4 KB 128 B。图 1给出典型 NA ND Flash的块和页的结构 。
NOR Flash 以并行的方式连接存储单元,具有分离的控制线、地址线和数据线 ,具有较快的读速度,能够提供片上执行的功能。但写操作和擦除操作的时间较长,且容量低、价格高。因此 NOR Flash多被用于手机、BIOS芯片以及嵌入式系统中进行代码存储 。
NAND Flash 以串行的方式连接存储单元,复用端口分时传输控制 、地址和数据信号 ,并由一个复杂的IO控制器为主机提供接口。由于对一个存储单元的访问需要多次地址信号的传输,且每次访问512 B , 2 KB或 4 KB的数据,NAND Flash的读取速度较慢 。但写操作和擦除操作相比 NOR Flash较快 ,且容量大 、价格较低。因此 NAND Flash多被用于数码相机 、MP3播放器、优盘,笔记本电脑中进行数据存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值