首页 > 其他分享 >指令系统、存储系统和cache

指令系统、存储系统和cache

时间:2024-01-14 18:56:18浏览次数:27  
标签:寻址 指令系统 Cache 存储系统 cache 操作数 地址 指令 流水线

指令系统:

指令的组成:一条指令由操作码和操作数(操作数地址叫做地址码)两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。

计算机指令执行过程:3个步骤,取指令——分析指令——执行指令;首先将程序计数器PC中的指令地址取出,送入地址总线,CPU根据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令执行所需的源操作数。

指令寻址方式(怎么找到下一条指令?)

  1. 顺序寻址方式:根据PC中的指令,一条指令接着一条指令地顺序执行。
  2. 跳跃寻址方式:下一条指令不是由程序计数器给出,而是由本条指令直接给出,程序计数器的内容也会相应地发生变化(堆栈的应用)。

指令操作数的寻址方式(怎么找到操作数?)

  1. 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
  2. 直接寻址方式:指令的地址码字段指出操作数在主存(内存)中的地址,但由于指令位数有限,能访问的存储空间是有限的,这是它相对于间接寻址方式的局限性。
  3. 间接寻址方式:(操作数地址的地址)指令的地址码字段指出的是[存储单元中存储的操作数的地址]
  4. 寄存器寻址方式:指令中的地址码是寄存器的编号。
  5. 基址寻址方式:将基址寄存器的内容加上指令中的形式地址(偏移量)而形成操作数的有效地址,其优点是可以扩大寻址能力。
  6. 变址寻址方式:将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。基址寄存器用于存储起始地址,而变址寄存器用于存储偏移量或变址量,用于动态计算地址

指令系统可以分为:CISC(Complex Instruction Set Computing)和RISC(Reduced Instruction Set Computing)。

  1. CISC:复杂指令集架构,兼容性强,指令繁多,长度可变,由微程序实现;
  2. RISC:指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制);

指令流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以叠加的效果,所有的部件去处理指令的不同段。

CISC由于指令功能复杂,规整性不好,不利于采用流水线技术来提升性能。RISC指令集,指令相对规整,功能简单,适合采用流水线技术来提高性能。

RISC架构的流水线通常包括指令提取、指令解码、执行、访存和写回等阶段。

RISC中的流水线技术:

  • 超流水线(Super Pipe Line)
  • 超标量(Super Scalar)
  • 超长指令字(Very Long Instruction Word, VLIM)

流水线时间计算:

  1. 流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。
  2. 流水线执行时间1条指令总执行时间+(总指令条数-1)*流水线周期。
  3. 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。公式:指令条数/流水线执行时间。
  4. 流水线的加速比计算:加速比是指使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,公式:不使用流水线执行时间/使用流水线执行时间。

 

存储系统和缓存

计算机采用分级存储体系的目的是为了解决存储容量、成本和速度之间的矛盾问题。

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,速度为内存的5~10倍,由半导体材料构成,其内容是主存的副本拷贝,对于程序员来说是透明的(程序员不用在意Cache)。

Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。

地址映射:在CPU工作时,送出的是主存单元的地址,而从Cache存储器中读取或写入信息时,需要处理的是Cache中的地址,因此需要将主存地址转换为Cache存储器的地址,这种地址的转换成为地址映射,由硬件自动完成映射,主要分为下列三种方法:

  1. 直接映射:地址变换简单但不灵活,容易造成资源浪费。
  2. 全相联映射:主存中任意一块都与Cache中的任意一块对应,因为可以随意调入Cache任意位置,但地址变换复杂,速度相对较慢,优点是最不容易发生块冲突的映像方式。
  3. 组组相连映射:前面两种方式的结合。速度和冲突概率居于二者之间。

缓存命中率:设命中率为x,从Cache中读取数据的时间为t1,从主存中读取数据的时间为t2,则CPU读取一次的平均时间为x*t1+(1-x)*t2

磁盘结构:

磁盘调度算法:

  1. 先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
  2. 最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
  3. 扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
  4. 单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。

在同一个磁道内,扇区内数据的读取顺序通常是按照扇区号的顺序进行的。

 

标签:寻址,指令系统,Cache,存储系统,cache,操作数,地址,指令,流水线
From: https://www.cnblogs.com/freecheng/p/17963837

相关文章

  • SpringCache教程
    前言极大地简化了程序员对于cache的操作流程,可以使用拒接方便的实现,支持redis,Caffeine,Memcached等不同的缓存框架。相关注解名称解释@Cacheable主要针对方法配置,能够根据方法的请求参数对其进行缓存@CacheEvict清空缓存@CachePut保证方法被调用,又希望结果......
  • 在Linux中清理Buff/cache
    在Linux中,缓冲区和缓存是为提高系统性能而保留的,但如果这些缓存过多,可能会消耗大量内存,影响系统的性能。有时候,您可能需要手动清理这些缓存以释放内存。但请注意,通常不建议定期或频繁地这样做,因为这样做可能会对系统性能产生负面影响。以下是清理buff/cache的几种方法:使用......
  • .NET Core MemoryCache缓存批量获取Key或者删除
    .NetCore下使用缓存,除了大家耳熟能详的Redis做分布式缓存外,本地内存缓存也会一起结合来使用,它存取更快,使我们的应用达到极致性能要求。这也是我们经常提到的3级或者4级缓存,每一层都有自己的使用场景,优缺点,结合业务特点来选择合适的才是王道。这里我们就使用Net原生的Microsoft......
  • cache操作:clean、invalidate与flush的含义
    前言本文试图搞清楚cache几个操作:clean、invalidate与flush的含义。由于只用过ARM和RISC-V,所以是从ARM和RISC-V的角度来说明。 cachelinecacheline是cache的基本访问单元。cacheline一般都会包含valid和dirty两个状态位,如下图的v和d。valid位表示当前cacheline的内容是......
  • git rm --cached 命令,最全详细讲解
    gitrm--cached命令,最全详细讲解gitrm--cached是Git中的一个命令,用于从版本控制中移除文件,但保留文件在本地工作目录中的副本。这个命令有以下几个关键点:从版本控制中移除:当你执行gitrm--cached<file>时,Git会将指定的<file>从当前的索引(也称为暂存区)中删除。这......
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、
    文章目录Flink系列文章一、maven依赖二、分布式缓存(DistributedCache)示例1、介绍2、maven依赖3、实现4、验证1)、验证步骤2)、验证本文介绍了flink关于分布式缓存的使用示例,比较简单。本文除了maven依赖外,没有其他依赖。本示例需要hadoop环境可用。一、maven依赖为避免篇幅过长,所......
  • IntelliJ IDEA 数据访问工具配置 Caché/M 数据库系统
    首先打开IntelliJIDEA的数据库访问工具,然后在数据源中选择:其他下面的InterSystemsIRIS数据源。  配置数据库驱动默认情况下的数据驱动给了9091,这个端口是不对的。IRIS的数据库端口应该是1972。如果你使用的是默认的数据库安装,那么可以参考下面的配置:jdbc:IRIS......
  • 解决前端vue2报错 Error: Can't resolve cache-loader和Error: Can't resolve babel-l
    总得说来报这种Error:Can'tresolve+模块名字的错误,一般就只有两种原因:一、少了这个包(直接安装:pnpmadd-D模块名字@版本),二、有这个包,但是版本在package.json中不正确。需要和你的vue/cli-service的版本对应上,该降级的时候降级,降级一般先删除再安装新的pnpmremovecss-loaderpn......
  • W3 Total Cache Pro v2.6.0 – WordPress 插件
    W3TotalCacheProv2.6.0:优化WordPress性能的专业解决方案一、引言在数字化的世界中,网站性能对于用户体验和搜索引擎排名至关重要。WordPress作为全球最受欢迎的内容管理系统之一,提供了大量的插件来帮助网站所有者优化其性能。其中,W3TotalCachePro以其出色的缓存功能和性能......
  • Python:diskcache实现基于文件的数据缓存
    diskcache是一个基于Sqlite文件的数据缓存如果在不想使用redis作为缓存的情况下,可以使用diskcache替代,减少对redis的依赖文档https://grantjenks.com/docs/diskcache/https://github.com/grantjenks/python-diskcachehttps://pypi.org/project/diskcache/安装pipinstall......