首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算机的启动

注:本文内容以 x86 体系计算机为例 硬件 CPU:负责读取和执行被加载(或映射)到内存中的指令或数据; ROM:只读存储器,存储在一个非易失芯片上,即在关机后内容仍然可以被保存。...I/O、MMIO I/O I/O 为 Input & Output 的简写,这里指的是 I/O 设备。...而控制这些 I/O 设备的原理其实就是控制设备内部寄存器的读写,这些 I/O 设备的寄存器被称为 I/O 端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。...AGP/PCI-E 显卡上的帧缓存、BIOS、PCI 设备等就可以使用读写内存一样的汇编指令完成,简化了程序设计的难度和接口的复杂性。...读取 BIOS 注:这里涉及到一些汇编基础,我就不过多解释了 在刚开机初始阶段计算机内存中是没有任何内容的,此时 CPU 通过读取 CS 和 IP 寄存器的内容来获取自己需要执行的指令,而此时寄存器 CS

63020

《深入浅出DPDK》&《DPDK应用基础》读书笔记

——戈登·摩尔,英特尔公司创始人之一 本文主要介绍了我在阅读《深入浅出DPDK》,《DPDK应用基础》这两本书中所划下的知识点 首先《深入浅出DPDK》这本书是intel的专家写的,而且《DPDK...应用基础》的作者也有受到这本书的指导,这本书读完已经挺长时间了,记得当时花了两个周的时间来阅读此书,我自认为我的阅读速度比平常人要快一些,但即便如此,由于书中有太多的知识点,刚好又触及我的知识盲区,所以读完的时间久了点...I/O设备可以旁路Hypervisor而直接访问物理内存和I/O TLB处理器缓存。...为了减少页表的查找过程,Intel 处理器实现了以一块缓存来保存查找结果,这块缓存被称为 TLB (Translation Lookaside Buffer),它保存了虚拟地址到物理地址的映射关系。...在CPU比I/O速率高很多时,这个负荷可以被相对忽略,问题不大,但如果连接的是高速网卡且I/O频繁,大量数据进出系统,开销累加就被充分放大。

4.4K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    大话Queue、Buffer、Cache

    这个问题似乎跨越了十几年甚至更长。而且跨越了IT领域后端前端,跨越了硬件和软件。 Queue 队列用于两个模块(或者硬件模块,或者软件模块)之间传递消息,一般采用FIFO(先进先出)方式。...软件队列,那就必须位于SDRAM里,比如刚才说的,各种I/O设备的驱动初始化时一般都会初始化至少两个队列,一个用于下发I/O,一个用于接收I/O完成回执(由I/O设备亲自写入完成队列并中断)。...每次下发I/O之后驱动将队列的写指针更新到I/O控制器的相关寄存器让后者知道host端准备了多少i/o了。 所以,队列,就是一个队列,如其名一样,这个没有什么歧义。...假设有个i/o写入0号扇区,而0好扇区的数据此时正在缓存里还没有被写入硬盘,那么缓存中的0扇区数据将被替换为最新写下来的这份,并继续留在缓存里。...而缓存最关键的区别就在于数据会赖着不走,为什么,因为可能马上会被访问到。

    87030

    计算机组成

    存储器 存储器层次结构如下: 可以看到CPU中,内核有寄存器,CPU中有L1,L2,L3缓存,再到内存条,硬盘/闪存,最后Server服务器都是存储器。 ?...存储器 其中CPU在做计算时,都是从寄存器中读取数据,但是寄存器能存储的数据太少,而且成本非常高,高运算的CPU几乎无时无刻都需要从主存中获取数据,所以在CPU中加入了Cache来避免频繁的读写。...北桥芯片 与处理器相邻的为北桥芯片,北桥芯片主要负责CPU与高带宽通信的部件,比如内存条以及显卡 比如Inter Core i7处理器已经集成了内存控制器,直接与内存条相连接,而其他的处理器没有,则北桥芯片负责提供内存控制器...多处理器连接的通信协议:QPI 主板与外部设备连接的通信协议:PCI-E,目前CPU直接焊在PCB板上,使用PCI-E进行芯片间的链接,目前也成为了芯片间互联的协议 原来使用的协议为PCI,该协议为共享式总线...而PCI-E在多设备通信时,使用桥的方式,两两设备间通信互不干扰,通信效率得到提升 主板与硬盘之间的通信协议:SATA

    89130

    深入GPU硬件架构及运行机制

    被遮掩的原因有很多,例如当前的指令是if(true)的分支,但是当前线程的数据的条件是false,或者循环的次数不一样(比如for循环次数n不是常量,或被break提前终止了但是别的还在走),因此在shader...4.4.1 内存架构 部分架构的GPU与CPU类似,也有多级缓存结构:寄存器、L1缓存、L2缓存、GPU显存、系统显存。...它们的存取速度从寄存器到系统内存依次变慢: 存储类型 寄存器 共享内存 L1缓存 L2缓存 纹理、常量缓存 全局内存 访问周期 1 1~32 1~32 32~64 400~600 400~600 由此可见...,shader直接访问寄存器、L1、L2缓存还是比较快的,但访问纹理、常量缓存和全局内存非常慢,会造成很高的延迟。...CPU 通过 MMIO 访问 GPU 的寄存器状态。 DMA传输大量的数据就是通过MMIO进行命令控制的。 I/O端口可用于间接访问MMIO区域,像Nouveau等开源软件从来不访问它。

    4.9K31

    SATA、mSATA、M.2、M.2(NVMe)、PCIE固态硬盘接口详解

    大家好,又见面了,我是你们的朋友全栈君。...诸多原因没能让mSATA接口火起来,反而被更具升级潜力的M.2 SSD所取代。...当然,SATA通道由于理论带宽的限制(6Gb/s),极限传输速度也只能到600MB/s,但PCI-E通道就不一样了,带宽可以达到10Gb/s,所以看似都为M.2接口,但走的“道儿”不一样,速度自然也就有了差别...NVMe SSD可有效降低延迟(图片来自网络) 在软件层方面,NVMe标准的延时只有AHCI的一半不到,NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗...PCI-E接口: 在传统SATA硬盘中,当我们进行数据操作时,数据会先从硬盘读取到内存,再将数据提取至CPU内部进行计算,计算后写入内存,存储至硬盘中;而PCI-E就不一样了,数据直接通过总线与CPU直连

    18.1K10

    操作系统和并发的爱恨纠葛

    我一直没有急于写并发的原因是我参不透操作系统,如今,我已经把操作系统刷了一遍,这次试着写一些并发,看看能不能写清楚,卑微小编在线求鼓励...... 我打算采取操作系统和并发同时结合讲起来的方式。...操作系统是一个并发系统,并发性是操作系统非常重要的特征,操作系统具有同时处理和调度多个程序的能力,比如多个 I/O 设备同时在输入输出;设备 I/O 和 CPU 计算同时进行;内存中同时有多个系统和用户程序被启动交替...那么,并发为什么会出现呢? 为什么是并发 计算机世界的快速发展离不开 CPU、内存和 I/O 设备的高速发展,但是这三者一直存在速度差异性问题,我们可以从存储器的层次结构可以看出 ?...CPU 内部是寄存器的构造,寄存器的访问速度要高于高速缓存,高速缓存的访问速度要高于内存,最慢的是磁盘访问。...最开始的时候,内存中 i = 0,aThread 读取内存中的值并把它读取到自己的寄存器中,执行 +1 操作,此时发生线程切换,bThread 开始执行,读取内存中的值并把它读取到自己的寄存器中,此时发生线程切换

    67010

    键盘敲入 A 字母时,操作系统期间发生了什么...

    通过读取这些寄存器,操作系统可以了解设备的状态,是否准备好接收一个新的命令等。...存在两个方法: 端口 I/O,每个控制寄存器被分配一个 I/O 端口,可以通过特殊的汇编指令操作这些寄存器,比如 in/out 类似的指令。...第三种,完全公平调度算法,大部分系统都把这个算法作为默认的 I/O 调度器,它为每个进程维护了一个 I/O 调度队列,并按照时间片来均匀分布每个进程的 I/O 请求。...另外,存储系统的 I/O 是整个系统最慢的一个环节,所以 Linux 提供了不少缓存机制来提高 I/O 的效率。...显示出结果后,恢复被中断进程的上下文。 ---- 大家好,我是小林,一个专为大家图解的工具人,我们下次见! ----

    59110

    【AI系统】算子循环优化

    那么为什么要分析数据的局部性呢?...[i] += B[j] 假设 m 和 n 是很大的数(大数组),所以对于每一轮 I 循环,等到 Bm-1被访问时,B1、B2等已经被清出缓存了。...从公式上推导,似乎只要 T 和 W 满足了能放进 Cache 的数量,那么 Cache miss 与 T、W 就无关,不同 T、W 的性能应该是一样的,但实际运行并不是这样的。...如果展开后循环体超过指令缓存容量,会引起缓存失效,造成程序性能的下降。并且循环展开会增加寄存器压力,可能导致生成更多的寄存器溢出处理操作,从而降低优化效果。...(b)): d[i] = a[i] + y 在第一个循环中,a 的值被依次写入,在第二个循环中又被马上读取,当数组非常大时,在第二个循环时要读取 a[0]时,a[0]早已因为 Cache 容量的限制而被清除

    7010

    CS162操作系统课程第二课-4个核心OS概念

    一些 Q&A: 每个线程是否都有自己独占的 CPU 缓存?答案是否定的,一般每个核有一个高速缓存,线程都共享同一个缓存,你可以想到如果切换太快,就没有线程能利用好缓存了。...当你读或写一个地址空间中的地址时,也许它像普通内存一样运行,或者完全忽略写入操作;或者可能是系统导致一个I/O操作发生,这被称为内存映射 I/O;或者它可能会导致异常,如果你试图在我这里展示的栈和堆之间的某个地方读或写是可以的...并发性就是大多数线程大部分时间都在休眠的情况,比如某个线程需要做一些 I/O,开始 I/O 时进入睡眠,然后在 I/O 完成时醒来,那么 CPU 不必等待 I/O 完成,而是可以做其他的事情。...一些 Q&A: 每个线程是否都有自己独占的 CPU 缓存?答案是否定的,一般每个核有一个高速缓存,线程都共享同一个缓存,你可以想到如果切换太快,就没有线程能利用好缓存了。...当你读或写一个地址空间中的地址时,也许它像普通内存一样运行,或者完全忽略写入操作;或者可能是系统导致一个I/O操作发生,这被称为内存映射 I/O;或者它可能会导致异常,如果你试图在我这里展示的栈和堆之间的某个地方读或写是可以的

    51820

    新名词|什么是「电源」程序员?

    区分不同数据对象的唯一方法是我们读取对象时的上下文,比如,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。 为什么是 C 这里插播一则新闻,为什么我们要学 C 语言?...程序被其他程序翻译成不同的形式 C 语言程序成为高级语言的原因是它能够读取并理解人们的思想。...I/O 设备(I/O Devices):Input/Output 设备是系统和外部世界的连接。...每个I/O 设备连接 I/O 总线都被称为控制器(controller) 或者是 适配器(Adapter)。控制器和适配器之间的主要区别在于封装方式。...文件是对 I/O 设备的抽象表示,虚拟内存是对主存和磁盘 I/O 设备的抽象表示,进程则是对处理器、主存和 I/O 设备的抽象表示。

    32710

    计算机基础知识

    用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要。   ...①解释的那样  用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的...然后同时兼备三者是不可能的,所以有了如下的不同的处理方式 由上图可以很清楚的看见寄存器存储是速度非常快的,但是它的容量却很少。下来就是高速缓存了。...我就不一一介绍了,我相信大家应该可以看得懂这个图。  ...2.cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。I/O设备一般包括两个部分:设备控制器和设备本身。

    68010

    计算机基础知识

    用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要。    ...①解释的那样     用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的...,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。   ...由上图可以很清楚的看见寄存器存储是速度非常快的,但是它的容量却很少。下来就是高速缓存了。我就不一一介绍了,我相信大家应该可以看得懂这个图。  ...2.cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。I/O设备一般包括两个部分:设备控制器和设备本身。

    54530

    C语言再学习 — 关键字volatile

    大家好,又见面了,我是你们的朋友全栈君。 上周确实事情挺多的,年会、公司聚餐,一到过年就有忙不完的事分心。...= 0; i--); } 编译: arm-linux-gcc -c led.c -o led.o –nostdlib 不使用标准库,生成led.o文件 二、为什么使用 volatile 我们上一篇文章讲到了...volatile 指出 i 是随时可能发生变化的,每次使用它的时候必须从 i的地址中读取,因而编译器生成的汇编代码会重新从i的地址读取数据放在 b 中。...寄存器地址为什么要加 volatile 修饰呢? 是因为,这些寄存器里面的值是随时变化的。...如 果没有 volatile 关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。

    38200

    计算机硬件知识

    大家好,又见面了,我是你们的朋友全栈君。 一 为何要学习计算机基础 python是编程语言,即python是语言 语言有英语、法语、葡萄牙语等,但凡是语言,都是用来沟通的介质。...用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常非常非常非常非常非常重要 寄存器的维护:   操作系统必须知晓所有的寄存器。...(常见于大型数据库系统中) 4.5 I/O设备 cpu和存储器并不是操作系统唯一需要管理的资源,I/O设备也是非常重要的一环。 见四中的图,I/O设备一般包括两个部分:设备控制器和设备本身。...但是随着处理器和存储器速度越来越快,单总线很难处理总线的交通流量了,于是出现了下图的多总线模式,他们处理I/O设备及cpu到存储器的速度都更快。...,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。

    61020

    我把 CPU 三级缓存的秘密,藏在这 8 张图里

    只要将近期 CPU 要用的信息调入缓存,CPU 便可以直接从缓存中获取信息,从而提高访问速度; 原因 2 - 减少 CPU 与 I/O 设备争抢访存: 由于 CPU 和 I/O 设备会竞争同一条内存总线...,有可能出现 CPU 等待 I/O 设备访存的情况。...那么,为什么 L1 缓存要把指令和数据分开呢?我认为有 2 个原因: 原因 1 - 避免取指令单元和取数据单元争夺访缓存(主要): 在 CPU 内核中,取指令和取数据指令是由两个不同的单元完成的。...我认为原因有 2 个: 原因 1: L1 采用分离缓存后已经解决了取指令单元和取数据单元的争夺访缓存问题,所以 L2 是否使用分离缓存没有影响; 原因 2: 当缓存容量较大时,分离缓存无法动态调节分离比例...总结 1、为了弥补 CPU 和内存的速度差和减少 CPU 与 I/O 设备争抢访存,计算机在 CPU 和内存之间增加高速缓存,一般存在 L1/L2/L3 多级缓存的结构; 2、对于基于 Cache 的存储系统

    1.9K41

    每周学点大数据 | No.21磁盘算法概述

    计算机中有很多用来存储数据的存储器,比如寄存器、缓存(Cache)、内存和硬盘等。 Mr. 王:这些存储结构都有什么特点呢?...Cache 的价格比寄存器稍便宜,存储空间也比寄存器大,它的存取速度比寄存器稍慢一些,它往往处在内存和CPU 中间,用来缓存数据,使得当CPU 需要用到一些数据时,可以快速地找它们,而不是到内存中去寻找...从价格、存取速度和空间的角度来看,设置多级存储结构还是非常有必要的,这能够让我们在最节省钱的情况下,达到最好的存储和访问效果。 小可:我知道多数程序都是在内存中运行的,那我们为什么还需要磁盘算法呢?...小可:为什么内存算法和磁盘算法会产生这么大的区别呢?而且为什么硬盘算法的界限反而变小了呢? Mr. 王:我们就拿浏览来解释一下吧。如果有N 个数据,在内存中只要一个个地读取就可以了。...此时,我们是以磁盘块为单位进行磁盘I/O 的,只需要N/B 的数量级,本例中共进行了5 次磁盘I/O。 小可:单单这么少的数据,N 和就差了一半啊。 Mr.

    88070

    操作系统基础-CPU虚拟化

    操作系统的三个要素 操作系统的定位是计算机资源(CPU,内存,硬盘,各种I/O设备等)的管理者。...比如,CPU访问一级缓存缓存只需要1个时钟周期,而进行磁盘I/O可能需要上千万个时钟周期。程序在进行I/O操作的时候,CPU实际是空闲的,这时候可以让CPU运行其他程序,提供计算机资源的利用率。 ?...另一方面,为了弥补高速CPU到低速I/O设备之间的差距,在存储器之间引入了多层的缓存,比如本地硬盘作为网络的缓存,内存(DRAM)作为硬盘的缓存,SRAM作为内存的缓存。...正是通过CPU和内存虚拟化,操作系统提供了这种幻象:似乎每一个进程都有一个独占的CPU和一片巨大的独占内存。...在具体实现上,CPU中有一个状态位,表明了当前运行在什么模式下: 用户的进程运行在用户模式下,这种模式能做的操作有限,比如它无法发起一个I/O请求,尝试这么做会引发一个异常(exception),导致进程被操作系统杀死

    1.6K40

    软硬件融合技术内幕 进阶篇 (5) ——云计算的六次危机(下)

    因此,在Linux中,出现了virtio,vhost,vhost-user等技术。当软件的优化不适合NFV等业务虚拟化形态时,又出现了SR-IOV这种软硬件融合的技术。...实际上,枚举的过程是驱动程序对读写根联合体配置空间 (Configuration Space)的相关寄存器实现的,根联合体会发出PCI-E的控制数据包,实现枚举的过程,最终遍历所有的PCI-E/传统PCI...SR-IOV是Single Root I/O Virtualization的缩写,其对立面为MR-IOV,在此不详细解释。..., 而SR-IOV的VF代替了虚拟网卡->TAP,那么,如果我们在支持SR-IOV的网卡中,实现vSwitch的功能,不就解决了这一问题吗?...如图,某不大正规的公有云上,通用性g6云服务器运行在整机128 HT的服务器上,创建实例时却只能创建104核,就是因为其中24个HT被vhost-user占用了,包括网络处理的DPDK和存储处理的SPDK

    94230
    领券