指令周期

计算机组成:输入输出系统

老子叫甜甜 提交于 2020-01-29 18:22:09
输入输出系统 通道可以看做是DMA的升级版,通道有自己的控制器甚至是存储器、内存 通道可以执行由通道指令编写的程序,由操作系统完成 如果使用通道,就不是连接接口了,而是连接设备管理器 I/O处理机可以使用微处理器甚至直接使用和主处理器相同的处理器来做,当然这就不是家用电脑的范畴了,强大的I/O处理机甚至在没有IO工作时,可以作为主机的处理器来使用 I/O和主机的连接方式 统一编址:将io地址看成内存地址的一部分。这种方式实现了io和内存的统一不需要单独的io指令,CPU指令集相对简单,如果内存空间比较大(eg.64位)可以采用这种方式 单独编址: 串行速度慢,但是适合长距离传输 不便于增删设备 外部设备输出的数据可以先缓存到io接口,进行数据格式的转换等操作再输入主机 便于增删设备、采用标准接口,可移植性强 信息传送的控制方式 CPU直接对IO进行管理 缺点就是广为人知的,浪费CPU DMA请求:向CPU申请占用一个存取周期的总线控制权从而将外部设备的数据加载到内存中,这个周期内CPU不能使用总线对内存进行访问,但是这段时间CPU依然可以正常使用(由于CPU会预先取一部分指令,这段时间不能访问内存有可能影响不大) 外部设备简介 主观图像:用户绘制的图像,由点线面构成,就是简单的那种 客观图像:eg.GUI A:模拟信号 D:数字信号 IO接口 为什么使用接口 主机可能使用并行传输

第二~五章小结 (2017-08-28 00:48:04)

微笑、不失礼 提交于 2020-01-29 02:53:21
第二章 x86处理器架构 中央处理单元(CPU)处理算术和逻辑运算。它包含了有限数量的存储位置,即寄存器,一个高频时钟用于同步其操作,一个控制单元和一个算术逻辑单元。内存存储单元在计算机程序运行时,保存指令和数据。总线是一组并行线路,在计算机不同部件之间传输数据。 一条机器指令的执行可以分为一系列独立的操作,称为指令执行周期。3个主要操作分别为取值、译码和执行。指令周期中的每一步都至少要花费一个系统时钟单位,即时钟周期。加载和执行过程描述了程序如何被操作系统定位,加载入内存,再由操作系统执行。 x86处理器系列有三种基本操作模式:保护模式、实地址模式和系统管理模式。此外,还有一个虚拟8086模式是保护模式的一个特例。Intel 64处理器系列有两种基本操作模式: 兼容模式和64位模式。在兼容模式下处理器可以运行16位和32位应用程序。 寄存器位CPU内的存储位置进行命名,其访问速度比常规内存要快很多。以下是对寄存器的简要说明: l 通用寄存器主要用于算术运算、数据传输和逻辑操作。 l 段寄存器存放预先分配的内存区域的基址,这些内存区域就是段。 l 指令指针寄存器存放的是下一条要执行指令的地址。 l 标志寄存器包含的独立二进制位于控制CPU的操作,并反映ALU操作的结果。 x86有一个浮点单元(FPU)专门用于高速浮点指令的执行。 微型计算机的心脏是它的主板,主板上有CPU

信号和中断的比较 + 中断和异常的比较

巧了我就是萌 提交于 2020-01-28 11:56:02
概念太多了,信号,软中断,中断等等。试着做总结。 下面这个里面主要讲了硬件中断: http://www.cnblogs.com/charlesblc/p/6261741.html 下面这个里面主要讲了软中断,硬中断: http://www.cnblogs.com/charlesblc/p/6263208.html 这里先比较一下异常和中断 参考 http://blog.csdn.net/dodo_check/article/details/8806961 l 中 断(也称硬件中断) 定义:中断是由 其他硬件设备 依照CPU时钟周期信号随机产生的。 分类: 可屏蔽中断 非可屏蔽中断 来源: 间隔定时器和I/O l 异 常(也称软件中断) 定义:当指令执行时 由CPU控制单元 产生的。 分类: 处理器探测到的异常 ² 故障 ² 陷阱 ² 异常终止 编程异常(也称软中断) ² int指令 来源: 程序的错误产生的 内核必须处理的异常(例如:缺页和内核服务的请求-int) 异常处理 l 当发生异常时,CPU控制单元产生一个硬件出错码。 l CPU根据该中断吗找到中断向量表内的对应向量,根据该向量转到中断处理程序。 l 中断处理程序处理完之后向当前进程发送一个SIG***信号。 l 若进程定义了相应的信号处理程序则转移到相应的程序执行,若没有,则执行内核定义的操作。 中断处理 l

蜂鸟E203 硬件学习-两级流水线的实现(三)

蓝咒 提交于 2020-01-26 06:40:16
(二)EXU模块 EXU段包括指令译码,指令派发,指令发射,指令执行,内存操作,数据写回。而E203是简单的顺序单发射,顺序执行,顺序写回类型的处理器。 将IFU通过IR寄存器发送给EXU的指令进行译码和派遣。 通过译码出的操作数寄存器索引(Index)读取Regfile(如图中RD-Regfile) 维护指令的数据相关性(如OITF) 将指令派遣(Dispatch)给不同的运算单元执行(ALU、Long-Pipes、LSU、以及EAI) 将指令交付(检查指令分支预测是否正确,是否产生中断和异常) 将指令运算的结果写回Regfile(WB ARB) (1)EXU译码模块 (e203_exu_decode.v) 译码模块的输入信号来自于IR阶段,包含当前需要译码的指令,执行PC,预测结果,非对齐和存储器访问错误。 首先根据最后两个比特位判断当前译码指令是RV32还是RV16,再根据指令格式,产生不同的指令类型信息。如:寄存堆的索引和控制信号,跳转类型和所需计算的信息。 输出dec_info包含很多模块的控制信息,有BJP单元的控制信息,ALU单元的控制信息,CSR单元的控制信息,乘除单元的控制信息,AGU单元的控制信息。同时还要生成后面执行所需要的各类型立即数,当执行的指令为非法指令时,译码器模块还将产生各类型的异常指令异常信息。 (2)整数通用寄存器组 (e203_exu

Vue.js(三):指令

余生颓废 提交于 2020-01-25 20:26:45
指令 指令是带有 v- 前缀的特殊 HTML 标签属性。指令的职责,就是当其属性值改变时,将某些行为应用到 DOM 上。 概述 指令是扩展和复用代码的一种方式。 🥛v-text 可以用属性值设置元素的内容: < span v-text = " value " > </ span > 当 value 修改时,v-text 会修改当前所在元素的内容,这就是 v-text 的某些应用到 DOM 的行为 。 🍺 v-bind 🌰:把 value 和 url 的 href 属性绑定起来: < div id = " app " > < a v-bind: href = " value " > url </ a > </ div > < script > var a = new Vue ( { el : '#app' , data ( ) { return { value : 'http://t.cn/#42' } } } ) </ script > 指令 v-bind 会在绑定的属性值修改时,同步修改由参数(href)指定的属性。 指令的格式: 指令能接受一个 参数 ,在指令后以 “ : ” 指明。 指令能接受一个或者多个 修饰符 ,是以 “ . ” 指明的特殊后缀。 指令能接受一个 单一JavaScript表达式 ,最常见的表达式就是一个属性值。 🍾 v-on 可以声明式地把 Vue

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

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

计算机组成原理复习题目

微笑、不失礼 提交于 2020-01-22 02:10:21
计算机组成原理期末复习题 世界第一台通用电子计算机ENIAC,1946 第一台存储程序式计算机-EDSAC,1949 数据校验码主要有奇偶校验码、海明校验码和循环冗余校验码 磁表面存储器记录信息是利用磁性材料的磁滞回归线特性( 计算机的字长取决于运算器一次运算二进制数的位数 模m交叉存储器有m个存储模块,它们有各自的地址寄存器和数据缓冲寄存器 使用虚拟存储器时,由操作系统完成地址转换 若显示器灰度级为32,则每像素应用5位表示 RAM芯片位扩展可以增加存储器字长 输入输出指令的功能是CPU与外设的数据传送 假设校验位的个数为r,k=2r-1-r个信息能用于纠正被传送数据的位数,需满足:2r≥k+r+1 某计算机字长是16位,它的存储容量是1MB,按字编址,它的寻址范围是0-219-1 操作数在寄存器中的寻址方式称为寄存器寻址;操作数在指令中的寻址方式称为立即寻址,相对寻址中,指令地址码给出一个偏移量(带符号数),基准地址隐含由PC给出。 操作码的编码有两种方式:定长操作码法,扩展操作码编法 串行传输时数据位的低位在前,高位在后。 DMA控制器与CPU分时使用内存常采用以下三种方法:停止CPU访内,周期挪用和交替访问。 流水线中的主要相关问题指资源相关、数据相关和控制相关。 双端口存储器中一个存储器具有两组相互独立的读写控制电路,可进行并行的独立操作。

CUDA:延迟隐藏详解

若如初见. 提交于 2020-01-21 04:39:38
延迟隐藏 线程束调度器的功能是调度线程束参与指令(流水线)的执行,例如运行指令和内存指令。 如果活跃的线程束有32个,线程束调度器有4个,线程束调度器每时钟周期会调度4个线程束进行指令执行,也就是说需要8个时钟周期进行调度,32个活跃的线程束都会执行。那么如果说一个指令的耗时或者说延迟是7个周期,当线程束调度器调度最后4给线程执行该指令的时候,第一组线程束的指令已经执行完毕了(第一组的线程束指令延迟被隐藏了),此时,我们就说指令的延迟被隐藏了或这说完成了延时延迟。 换句话说,一个SM中32个线程束执行一个耗时8个时钟周期的指令,它们全部执行完毕最短需要的时间是,8+8 = 16个时钟周期,在延迟隐藏的情况下,即每个线程束都处于活跃状态,耗时是16个周期,即16个周期即完成了任务。在非延迟隐藏的情况下,即没有足够多的线程束处于活跃状态,那么线程束调度器就会存在等待的情况,在这种情况下,耗时将>16个周期。 所以说,延迟隐藏需要有足够多的活跃的线程束,足够多活跃的线程束正相关于设备开启的线程束数量,设备开启的线程束数量由块的大小(执行配置)和资源约束(一个核函数中寄存器和共享内存的使用情况)决定。 总之,如果有足够的并发活跃线程,那么可以让GPU在每个周期内的每一个流水线阶段中忙碌。GPU的指令延迟被其他线程束的计算隐藏。 完成隐藏延迟所需的活跃的线程束 根据利特尔法则

程序执行的过程 - 一文看懂计算机执行程序的过程

旧街凉风 提交于 2020-01-20 13:15:53
程序就是指令的集合,为使计算机按预定要求工作,首先要编制程序。程序是一个特定的指令序列,它告诉计算机要做哪些事,按什么步骤去做。指令是一组二进制信息的代码,用来表示计算机所能完成的基本操作。   1、程序   程序是为求解某个特定问题而设计的指令序列。程序中的每条指令规定机器完成一组基本操作。如果把计算机完成一次任务的过程比作乐队的一次演奏,那么控制器就好比是一位指挥,计算机的其它功能部件就好比是各种乐器与演员,而程序就好像是乐谱。计算机的工作过程就是执行程序的过程,或者说,控制器是根据程序的规定对计算机实施控制的。例如,对于算式      计算机的解题步骤可作如下安排:   步骤1:取a ;   步骤2:取b ;   步骤3:判断 ;   若 b≥0,执行步骤4   若b<0,执行步骤6   步骤4:执行a+b;   步骤5:转步骤7;   步骤6:执行a-b;   步骤7:结束。   计算机的工作过程可归结为:取指令→分析指令→执行指令→再取下一条指令,直到程序结束的反复循环过程。通常把其中的一次循环称为计算机的一个指令周期。总之,我们可把程序对计算机的控制归结为每个指令周期中指令对计算机的控制。   2、指令   程序是由指令组成的。指令是机器所能识别的一组编制成特定格式的代码串,它要求机器在一个规定的时间段(指令周期)内,完成一组特定的操作

动态调度-CA

孤街浪徒 提交于 2020-01-19 15:17:02
文章目录 影响指令流水线的因素 影响因素 程序的相关性 指令调度技术 编译器的静态调度 软件调度与硬件调度 动态调度技术 静态流水线的问题 动态调度思想 解决WAW和WAR的办法 Tomasulo算法 历史 Tomasulo算法结构 Tomasulo算法的流水阶段 举例 小结 动态流水线的例外处理 例外(Exception)与流水线 动态流水线的精确例外处理 硬件支持动态流水线的精确例外处理 指令重排序缓存Reorder Buffer (ROB) 假设ADD发生了溢出例外 龙芯1号把ROB和队列合并 总结 补:Meltdown攻击的基本原理(幽灵、熔断漏洞) 影响指令流水线的因素 影响因素 运行时间 = 程序指令数 * CPI (每条指令时钟周期数) Pipeline CPI=Ideal pipeline CPI + Structural stalls + RAW stalls + WAR stalls + WAW stalls + Control stalls 程序的相关性 程序的相关性容易引起流水线堵塞,可以通过软件和硬件的方法避免堵塞或降低堵塞的影响; • 编译调度:如循环展开 • 乱序执行:需要等待的指令不影响其他指令 (1)数据相关 :(真相关):导致RAW 1)定义:指令j数据相关于指令i,指令j使用了指令i产生的结果; 2)传递性:指令j数据相关于指令k