流水线

Runloop的原理和核心机制

若如初见. 提交于 2019-12-16 11:19:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程。RunLoop就是控制线程生命周期并接收事件进行处理的机制。 RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统。 Foundation: NSRunLoopCore Foundation: CFRunLoop 核心部分,代码开源,C 语言编写,跨平台 目的 通过RunLoop机制实现省电,流畅,响应速度快,用户体验好 理解 进程是一家工厂,线程是一个流水线,Run Loop就是流水线上的主管;当工厂接到商家的订单分配给这个流水线时,Run Loop就启动这个流水线,让流水线动起来,生产产品;当产品生产完毕时,Run Loop就会暂时停下流水线,节约资源。RunLoop管理流水线,流水线才不会因为无所事事被工厂销毁;而不需要流水线时,就会辞退RunLoop这个 主管,即退出线程,把所有资源释放。 RunLoop并不是iOS平台的专属概念,在任何平台的多线程编程中,为控制线程的生命周期,接收处理异步消息都需要类似RunLoop的循环机制实现,Android的Looper就是类似的机制。 特性 主线程的RunLoop在应用启动的时候就会自动创建 其他线程则需要在该线程下自己启动 不能自己创建RunLoop

DSP微架构

若如初见. 提交于 2019-12-10 12:49:02
微架构又叫指令集架构(Instruction Set Architecture,ISA). DSP的微架构(流水线,指令集,基本运算单元等) SIMD:单指令多数据流,用于打包指令集 整数 四级流水:取指(instruction fetch) 解码(instruction decode) 执行(Execute) 写回 流水线是否越深越好? 当然不是合适最好。流水线越深吞吐率越高性能越好,但同时浪费越大,面积消耗越大。 指令集:存储在CPU内部,对CPU的运算进行指导和优化的硬程序。Intel主要有X86,SSE等指令集。 来源: CSDN 作者: 司cc 链接: https://blog.csdn.net/yuxiaoxi21/article/details/93618377

Jenkins2构建pipeline流水线

怎甘沉沦 提交于 2019-12-06 02:11:06
流水线有两种方式: 1、脚本式流水线 2、声明式流水线 构建流水线的简单示例: 脚本式流水线 node ('master'){ stage("Source"){ //从Git仓库中获取代码 git 'https://github.com/brentlaster/gradle-greetings.git' } stage("Build"){ } stage("Test"){ } stage("push"){ } } 声明式流水线 pipeline { agent {label 'master'} stages { stage('Source') { //拉取构建源码 steps { //从git仓库中获取代码 git 'https://github.com/brentlaster/gradle-greetings.git' } } stage('Build') { steps { //运行构建 bat "echo 'Build'" } } stage('Test') { steps { //测试 bat "echo 'Test'" } } stage('Push') { steps { //发布上线 bat "echo Push" } } } } 脚本式流水线和声明式流水线的区别: 脚本式流水线 优点:脚本灵活性更高、可以构建更复杂的流水线 缺点:脚本代码结构不清晰不容易维护

CPU子系统

谁都会走 提交于 2019-12-05 07:16:05
CPU的基本结构: CPU的主要部件: ​ 运算部件、缓存部件、寄存器、控制器、时序部件 CPU的工作原理: ​ 主要功能:处理指令、执行操作、控制时间、数据运算 ​ 执行指令的流程:读取指令、指令译码、指令执行、后续工作 部件的控制方式: ​ 同步控制方式:每步操作都向统一的外部时序信号对齐,每步操作之间无交互; ​ 异步控制方式:每步操作都不需向统一的外部时序信号对齐,每步操作之间通过交互应答来实现协同; 外部连接与I/O控制任务 指令系统: 设计CPU的一般过程: ​ 指令系统 --- 数据通路 --- 控制器 --- CPU定型 指令可能会涉及到的操作数类型: ​ 地址码数据:寄存器编号或者存储器地址,无符号整数. ​ 数值型数据:定点数、浮点数等,一般用补码表示; ​ 字符型数据:通常表示为ASCII码/汉字内码格式; ​ 逻辑型数据:常规二进制代码,不具有数值含义。 指令中的寻址方式: ​ 立即寻址: ​ 直接寻址: ​ 寄存器直接寻址: ​ 间接寻址(寄存器间接寻址、堆栈间接寻址): ​ 变址、基址寻址及其变化: ​ 基址寻址: ​ 基址 + 变址: ​ PC相对寻址: ​ 页面寻址(伪直接寻址): 设计传送指令时需要考虑: ​ 规定传送范围、指明传送单位、设置寻址方式 算数、逻辑运算指令: ​ 算数运算指令:设计时需要考虑操作数类型、符号、进制等

数字集成电路设计-20-multi-cycle

妖精的绣舞 提交于 2019-12-04 17:55:04
引言 前面我们介绍了流水线的写法( http://blog.csdn.net/rill_zhen/article/details/45980039 ),流水线是数字设计中很常用的一种设计方法,可以提高运行频率,提高吞吐量。 如果组合逻辑延迟较大,一个时钟周期完成不了时,除了插入寄存器将组合逻辑拆分成流水线外,还可以采用multi-cycle的方式。 multi-cycle的工作机制很简单,从给定输入之后,等待多个周期之后,再去采样输出结果。 本小节我们将通过一个小实验来说明multi-cycle的具体RTL实现。 1,功能介绍 假设有某个模块,其计算量很大,以致延迟较大,一个周期完成不了,需要3个cycle才行。 假设时钟周期是10,这个模块的运算分为“加法,左移,减法”三个操作,分别用时7,8,9。 2,RTL实现 如果在数字设计时,遇到上述模块描述的情况时,可以考虑multi-cycle实现。 具体RTL如下:mc.v 其中关于状态机的写法,我们之前有专门介绍,如有疑问,请参考( http://blog.csdn.net/rill_zhen/article/details/39585367 )。 /* * multi-cycle example * Rill 2015-05-29 */ module Mmulti_cycle ( input clk, input rst_n,

【《超标量处理器基础》学习笔记一】处理器设计

帅比萌擦擦* 提交于 2019-12-04 10:30:26
本系列为《超标量处理器基础》学习笔记,多数为书中内容,摘取感兴趣的部分稍作整理。 体系结构 指指令集体系结构,即指令集的规范,而 微体系结构 是指体系结构的具体逻辑实现,同一种指令集体系结构可以用不同的微体系结构,并采用不同的流水线设计,不同的分支预测算法等。 微体系结构的多样性使得同一种体系结构能够不断地推陈出新,并利用新出现的微体系结果技术来提高微处理器的性能,同时又保持代码的兼容性。 微处理器是指令集处理器(ISP, Instruction Set Processor)。ISP执行预先定义指令集中的指令。微处理器的功能几乎完全取决于指令集,从而表明了它的执行能力。所有运行于微处理器上的程序都要基于指令集进行编码。预定义的指令集称为指令集体系结构(ISA, Instruction Set Architecture)。ISA是软件与硬件之间的接口,或者是程序与处理器之间的接口。ISA是设计的规范,而微处理器或ISP是设计的实现。 微处理器的发展符合摩尔定律,即在单个芯片上的器件集成度将以每18个月到24个月的速度翻一番。 体系结构、逻辑实现和物理实现 体系结构规定了处理器的功能性行为,逻辑实现是实现体系结构的逻辑结构和组织,物理实现是逻辑实现的物理结构和具体表现形式。 体系结构对指令集处理器的指令集合进行说明。为了能被处理器执行,所有的软件都必须与指令集匹配

【计算机系统结构】第3章 流水线技术问答题

匿名 (未验证) 提交于 2019-12-03 00:27:02
1. 流水技术有哪些特点? (1)流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段”。 (2)每个子过程由专用的功能段实现。 (3)各个功能段所需时间应尽量相等。 (4)流水线需要有“通过时间”,在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果。 (5)流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线的效率才能充分发挥。 2. 按照流水线所完成的功能来分,流水线可分为哪两类? (1)单功能流水线:只能完成一种固定功能的流水线。 (2)多功能流水线:流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。 3. 按照同一时间内各段之间的连接方式来分,流水线可分为哪两类? (1)静态流水线:在同一时间内,流水线的各段只能按同一种功能的连接方式工作。 (2)动态流水线:在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。 4. 按照流水的级别来分,流水线可分为哪三类? (1)部件级流水线(运算操作流水线):把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作。 (2)处理机级流水线(指令流水线):把解释指令的过程按照流水方式处理。 (3)处理机间流水线(宏流水线):由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。 5. 按照数据表示来分

计算机硬件基础知识

◇◆丶佛笑我妖孽 提交于 2019-12-03 00:02:02
2.1 计算机硬件基础知识   2.1.1 计算机系统的组成、体系结构分类及特性       CPU和存储器的组成、性能和基本工作原理     CISC/RISC,流水线操作,多处理机,并行处理     常用 I/O 设备、通信设备的性能以及基本工作原理     I/O 接口的功能、类型和特性     I/O控制方式(中断系统、DMA、I/O处理机方式)   2.1.2 存储系统     虚拟存储器基本工作原理,多级存储体系     RAID 类型和特性   2.1.3 可靠性与系统性能评测基础知识     诊断与容错     系统可靠性分析评价     计算机系统性能评测方法      计算机体系结构分类 :     从 宏观 上按 处理机数量 进行分类,分为单处理系统、并行处理与多处理系统和分布式处理系统。     从 微观 上按 并行程度 分类:最为常见分类方式有:Flynn分类法与冯氏分类法。考试中主要考察的是Flynn分类法。        Flynn分类法 是根据指令流、数据流和多倍性三方面来进行分类的:                计算机硬件组成 :     计算机硬件系统是依照冯·诺依曼所设计体系结构,即包括 运算器 、 控制器 、 存储器 、 输入设备 和 输出设备 五大部件组成。     运算器和控制器组成中央处理器(CPU)      运算器 负责完成算术

深入浅出计算机组成原理:冒险和预测(三):CPU里的“线程池”(第24讲)

匿名 (未验证) 提交于 2019-12-02 23:56:01
一 、引子 过去两讲,我为你讲解了通过增加资源、停顿等待以及主动转发数据的方式,来解决结构冒险和数据冒险问题。对于结构冒险,由于限制来自于同一时钟周期不同的指令, 要访问相同的硬件资源,解决方案是增加资源。对于数据冒险,由于限制来自于数据之间的各种依赖,我们可以提前把数据转发到下一个指令。 但是即便综合运用这三种技术,我们仍然会遇到不得不停下整个流水线,等待前面的指令完成的情况,也就是采用流水线停顿的解决方案。比如说,上一讲里最后给你的例子, 即使我们进行了操作数前推,因为第二条条加法指令依赖于第一条指令从内存中获取的数据,我们还是要插入一次NOP的操作。 那我们能不能让后面没有数据依赖的指令,在前面指令停顿的时候先执行呢? 答案当然是可以的。毕竟,流水线停顿的时候,对应的电路闲着也是闲着。那我们完全可以先完成后面指令的执行阶段。 二、填上空闲的NOP:上菜的顺序不必是点菜的顺序 之前我为你讲解的,无论是流水线停顿,还是操作数前推,归根到底,只要前面指令的特定阶段还没有执行完成,后面的指令就会被“阻塞”住。 但是这个“阻塞”很多时候是没有必要的。因为尽管你的代码生成的指令是顺序的,但是如果后面的指令不需要依赖前面指令的执行结果,完全可以不必等待前面的指令运算完成。 比如说,下面这三行代码。 计算里面的 x ,却要等待 a 和 d 都计算完成,实在没啥必要。所以我们完全可以在 d