当前位置: 首页 > news >正文

做教育网站用什么颜色南京手机网站制作

做教育网站用什么颜色,南京手机网站制作,国外域名买卖,wordpress 高级版目录 I/O基本概念 I/O设备与CPU连接图 CPU与I/O设备的交互 访问I/O设备#xff08;IO Access#xff09; 数据传输#xff08;Data Tronhsfer#xff09; I/O设备虚拟化技术 软件辅助全虚拟化 半虚拟化 Virtio协议基本概念 Virtqueue讲解 硬件辅助全虚拟化 I/O…目录 I/O基本概念 I/O设备与CPU连接图 CPU与I/O设备的交互 访问I/O设备IO Access 数据传输Data Tronhsfer I/O设备虚拟化技术 软件辅助全虚拟化 半虚拟化 Virtio协议基本概念 Virtqueue讲解 硬件辅助全虚拟化 I/O直通方式 SR-IOV方式 I/O基本概念 什么是I/O设备 I/O就是输入输出而I/O设备就是可以将数据输入到计算机或者将计算机的数据输出到其他设备属于计算机的硬件设备 I/O设备具体使用什么类型的数据、做什么事情取决于I/O设备本身的功能不同功能的I/O设备传输数据可能不同例如磁盘会将数据持久化、网卡会将数据转发到其它主机 I/O设备的分类 存储I/O设备块设备-可以寻址 也称外存用来存储设信息 例如硬盘、光盘、U盘等 人机交互设备字符设备-不可寻址 主要就是实现用户与计算机系统之间的通信 在输入输出时通常采用中断驱动的方式 例如打印机、键盘鼠标等 网络通信设备 主要用于与远程设备进行通信 例如网卡、调制解调器等 I/O设备与CPU连接图 通常I/O设备并不会直接与CPU进行通信而是依靠设备控制器通信来实现通信设备控制器位于计算机本身内部集成在主板上包含一些寄存器 设备控制器的作用 接收设备的CPU指令CPU的读写指令和参数存储在控制寄存器中 向CPU报告设备的状态状态寄存器记录I/O设备的当前状态 进行数据交换通过数据寄存器暂存CPU发来的数据和IO设备发来的数据之后将数据发送给控制寄存器或CPU 地址识别通过可寻址存储或队列根据CPU提供的地址来判断CPU要读取的是哪个IO设备 CPU与I/O设备的交互 在一次完整的CPU与IO设备的交互中有三个重要的部分 CPU访问I/O设备CPU与I/O设备进行数据交换I/O设备将结果返回给CPU 访问I/O设备IO Access 访问I/O设备目前主要有两种方式PMIO和MMIO 设备控制器上有一组IO寄存器, CPU通过访问IO寄存器就可以对IO设备进行相应的操作 两种不同的方式其区别就是找到IO寄存器的方式不同 PMIO端口映射IOPort Mapped IO 将I/O设备独立看待使用CPU提供的专用I/O指令访问I/O设备 设备控制器的寄存器上映射了一组IO端口这些IO端口存储在设备控制器中不占用内存地址CPU就可以通过一些特殊的指令来访问这些端口从而达到访问IO寄存器的效果最后达到对IO设备进行操作的目的 优点使用专门的IO指令对端口进行操作IO指令短执行速度快 缺点CPU需要设计单独的指令实现复杂不能使用通用的内存访问指令操作 MIMI内存映射IOMemory Mapped IO 物理内存和I/O设备共享物理内存地址空间直接访问内存地址访问I/O设备 将设备控制器上寄存器映射的一组IO端口映射为一些特殊的内存地址CPU只需要访问这些特殊的内存地址的话则可以达到访问IO端口的效果也就对设备进行了操作操作系统内部也不需要执行特殊的指令而只需要像正常的操作一样访问特殊的内存地址即可对IO设备进行操作 后续衍生出了PCI设备 PCI设备及其衍生的接口如PCIE主要服务于高速I/O设备-网卡和显卡等 计算机既要访问设备管理器的寄存器也要访问它们的内存 数据传输Data Tronhsfer 数据传输目前主要有三种实现方式传统的标准传输、引入中断的传输、DMA传输 传统的标准交互程序直接控制的方式 CPU通过发送IO指令来进行数据传输以读取数据为例 CPU通过PMIO或MMIO获得IO设备对应的状态寄存器然后读取I/O设备的状态如果是忙碌状态就继续轮询检查状态如果是空闲状态则从中数据寄存器中读取数据到CPU中读到CPU后CPU还需要往内存中写入数据写完后在执行下一套指令 优点实现简单 缺点CPU和I/O设备只能串行化工作CPU要一直轮巡检查长期处于忙等的低效状态中 中断驱动的方式 通过允许I/O设备主动打断CPU的运行并请求服务来解放CPU以读取数据为例 CPU通过PMIO或MMIO获得IO设备对应的状态寄存器然后读取I/O设备的状态如果是忙碌状态则CPU先做自己的任务当IO设备空闲时便发出中断请求信号CPU感知到中断后就会把当前正在进行任务的相关计算数据保存下来优先完成对I/O设备的处理然后CPU将读取的数据在存入到内存中 优点CPU和I/O设备可以并行工作CPU利用率得到提升 缺点数据在硬件中的移动是通过CPU完成的仍然会消耗较多的CPU时间 直接存储方式DMADirect Memory Access 以上两种方式数据在硬件中的移动是通过CPU完成的CPU读取数据时先得到数据然后再由CPU存入内存I/O设备读取数据时也是由CPU作为中间人 DMA的数据流向是从IO设备直接放入内存或从内存直接到IO设备不需要使用CPU作为中间者直接将CPU从I/O任务中解脱出来 多了DMA控制器模块CPU将需要读取数据告诉DMA控制器想要读取数据的那一块然后把数据读到哪个内存的哪个地址然后DMA控制器就代替CPU和设备控制器进行交互完成读取的工作并将读取的数据写入到内存中去此时CPU就可以去做其他的事情 当DMA控制器得操作执行完成后将产生中断请求信号通知CPU读取任务完成 优点仅在开始和结束需要CPU干涉CPU和利用率进一步提升 缺点CPU发出一条指令只能读或写一个或多个连续的数据块如果读写的数据块不是连续存放的则CPU需要分别发送多条I/O指令进行多次中断处理 还有一种方式通道控制方式 通道值得是一种硬件可以理解为低配版的CPU 通道根据CPU的指令执行响应程序只有完成一组数据块的读写后才会发出中断信号让CPU干预也是直接有设备→内存或内存→设备 CPU的干预频率最低 实现方式 CPU干预频率 每次I/O传输的单位 数据流向 程序直接控制方式 极高 字 设备→CPU→内存 内存→CPU→设备 中断驱动方式 高 字 设备→CPU→内存 内存→CPU→设备 DMA方式 中 块 设备→内存 内存→设备 通道控制方式 低 一组块 设备→内存 内存→设备 I/O设备虚拟化技术 虚拟化架构虚拟化的基础知识-CSDN博客 软件辅助全虚拟化 核心思想 将I/O设备以一个虚拟设备的形式暴露给虚拟机虚拟机操作系统内部看来他正在使用一个真实的物理设备 VMM截获虚拟机驱动程序对设备的访问并进行设备模拟VMM的设备模拟器需要仔细研究现实设备的接口定义和内部设计规范然后通过软件的方式完全模拟I/O设备显示设备具有哪些资源设备模拟器就需要呈现出同样的资源 访问设备 CPU通过PCI总线与I/O设备连接在CPU的视角下每个设备就是一个PCI设备而每一个PCI设备都有一组重要的寄存器叫做基址寄存器软件虚拟化是通过VMM模拟基地址寄存器给虚拟机使得虚拟机能够找到I/O设备 访问拦截 虚拟机CPU访问虚拟I/O设备的两种形式PMIO和MMIO PMIO和MMIO找到设备对应的IO端口或内存地址都是通过基址寄存器完成的 PMIO访问拦截 CPU通过特殊指令访问IO端口这些端口可以由VMM来屏蔽掉一旦CPU要访问这些端口CPU就会触发异常退出虚拟机由VMM接管此时VMM就可以截获到这次IO请求 MIMO访问拦截 CPU通过内存特殊地址来访问IO端口该内存特殊地址为GPA我们需要将其映射为HPA而GPA→HPA的映射是由VMM建立的当虚拟机触发MMIO来访问这些IO特殊地址时触发异常产生VM exit交给VMM处理这时VMM就可以感知到虚拟机对IO设备的访问了并拦截了此次访问请求 设备模拟 需要VMM来模拟设备的真实行为了不同的IO设备类型模拟不同的行为 在VMM层面这些模拟的设备是一个基于本地文件系统的一个文件而虚拟机对于整个磁盘的读写在经过VMM层就转化为了对这个文件某一位置的读写在此过程中就涉及到数据传输DMA为例子 VMM内部需要模拟DMA的功能虚拟机的设备驱动会告诉该DMA要读取数据的信息虚拟机告知DMA的是GPA地址需要通过内存虚拟化将该GPA转为HPA地址然后由VMM来模拟这个行为将数据从文件中读取出来写入到目标地址中 当DMA数据传输完成之后VMM产生中断通过为虚拟机的vCPU注入一个中断告知虚拟机内部这次IO请求的完成然后由虚拟机内部的中断机制来完成IO请求剩余的中断处理 此方式的特点 虚拟机操作系统原有的驱动程序无需修改就可以驱动虚拟设备 对虚拟机来说非常透明无需考虑底层硬件的情况 软件模拟效率较低并且虚拟机发送出来的I/O请求需要虚拟机和VMM之间进行多次交互产生巨大开销 以KVM架构实现软件辅助全虚拟化的架构 虚拟机发送I/O请求到虚拟机的设备驱动 设备驱动发送的I/O设备操作请求被KVM模块中的I/O操作捕获代码捕获不会直接发到物理设备上 KVM的I/O操作模块捕获到I/O请求后把请求进行处理将请求信息存放到I/O共享页 QEMU程序从I/O共享页读取信息后交由硬件模拟代码来模拟出本次I/O操作然后将其转发给硬件硬件将结果返回给QEMU程序 QEMU程序将将结果放回到I/O共享页并通知KVM模块中的I/O操作捕获代码 KVM模块的捕获代码读取I/O共享页中的操作结果将结果返回给虚拟机 半虚拟化 Virtio协议基本概念 为什么提出Virtio协议 Virtio很好的定义了一套半虚拟化的架构但并不是唯一的半虚拟化IO的技术它的主要意义是简化和统一半虚拟化I/O的标准 Virtio半虚拟化作为当前KVM平台上主流的半虚拟化IO协议在设备的资源高效利用和保持性能之间做到了一个较好的平衡既能够利用半虚拟化的特点在数据传输层面极大的提高IO的效率又能够保持前后端的良好兼容 其他半虚拟化协议 Xen有自己的一套完整的半虚拟化IO的实现方案、VMware也有自己的一套半虚拟化实现方案 Virtio协议的概念 virtio定义了一套典型的前后端架构通过在虚拟机安装前端驱动Front-end driver在VMM安装后端驱动Back-end前端将请求通过VMM提供的通信机制直接发给后端后端处理完请求后再发回通知给前者使得前后端直接通信 前后端之间的通信可以分为两个层面 控制层面 通过控制层面使得前后端在通信之前在某方面达成一致还会做一些对于数据层面的配置例如CPU发现设备、配置IO设备、管理IO设备等相关操作 例如由于软件不断更新前后端之间的版本可能不一致在新的版本中可能会有新的特性为了达成一致后端会将自己的特性集合发给前端前端也会将这些特性与自己的特性进行对比最后返回两者的交集这样就可以确保在特性上达成一致 数据层面 数据层面是为虚拟机和IO设备进行数据传输所服务的可以对虚拟机和设备之间IO数据传输的相关数据与传输方式进行设定 在数据层面中定义了一个virtqueue数据传输结构来供前端和后端进行数据上的通信 Virtqueue讲解 什么是Virtqueue Virtqueue是一个队列的抽象模型前端驱动负责向virtqueue中插入一个个数据buffer后端则负责处理这些buffer每个buffer可以由一段或多段不连续的数据空间链接而成每段数据空间可以由不同的读写权限用于不同的用途即buffer的具体结构与IO设备类型相关 virtqueue模型如何实现前后端通信 virtqueue需要支持5个接口来实现数据在虚拟机和宿主机之间的传输 add_buf接口向virtqueue中插入一个待处理的buffer kick接口    通知宿主机由新的buffer加入 get_buf接口 从virtqueue中获取一个宿主机处理完成的buffer disable_cb和enable_cp接口IO设备驱动中的关中断和开中断用于设置在宿主机处理完一个buffer后是否会被调用 virtio_ring的作用以及组成 Virtqueue是数据传输的抽象模型而virtio_ving也称为ving是这个模型的一种高效实现方式而ving主要由以下三个部分组成 描述符表项 首先virtqueue会给每个buffer分配一个描述符描述buffer的地址、长度等并且也会维护一个全局的表来记录这些描述符这个表中包含描述符所描述的特性也有可能多个buffer连成一个链表 Available ring队列 这个队列主要就是来表示在描述表里面有哪些请求是需要被处理的需要将其在描述表中对应的序列号放入此队列如果序号之间存在链接则只放第一个序号 Used ring队列 后端处理完成后会将处理好的请求放到该队列中这个队列的格式和Available Ring是差不多的也是把相应的描述符在描述表中对应的序号填写进去如果后端往buffer里面写过数据它同样会带上她在buffer里面写入数据的长度 工作流程 假如前端发送了一个IO读取的请求则前端通过add_buf接口在virtqueue中插入一个buffer并且接下来会往描述符表项中写入关于这一个buffer的描述符包含地址、长度、序号等信息 然后此buffer描述符对应的序列号加入到Available Ring队列此时前端就会通过virtqueue提供的kick接口来告知后端设备这些请求是需要处理的 然后后端设备将会从Available Ring队列里面读取请求来处理当然这个kick也会涉及到一次vm-exit 后端处理完成后会将处理好的请求放到Used Ring队列也是把相应的描述符在描述表项中的对应序号填写进去然后会以一个正常的中断形式注入给虚拟机告知其内部I/O操作完成 然后前端通过get_buf接口从virtqueue中的Used Ring队列获取宿主机处理完成的buffer 特点 需要修改虚拟机和宿主机操作系统内核相应的代码来满足相应要求兼容性较低 省略了我们在发送I/O前先进行VMM捕获的过程使用效率提升 支持前端在Available Ring中设置让后端知道什么时候能够触发一个中断也可以在后端Used Ring中设置前端的下一次Kick是什么时候 以KVM架构实现半虚拟化的架构 不过常用的半虚拟化架构为Xen架构 硬件辅助全虚拟化 目前常用的有两种方式 I/O直通方式设备透传方式、SR-IOV方式 I/O直通方式 核心思想 虚拟机真正直接使用到了物理设备给物理服务器安装多个I/O设备将一个物理I/O设备直通给虚拟机使用使得虚拟机操作系统可以直接操作这个I/O设备尽量避免触发VM exit来让VMM介入最常用的就是网卡--直通网卡 I/O直通技术需要硬件支持才可以完成首选的是Inter的VT-d技术 设备访问 我们要知道PMIO和MMIO找到设备对应的IO端口或内存地址都是通过PCI设备的基址寄存器完成的 因此在直通的情况下虽然物理设备直接存在但是不能直接把物理设备的基址寄存器暴露给虚拟机因为在设备透传给虚拟机之前该I/O设备还需要挂载给物理主机因此该I/O设备的基址寄存器实际上是宿主机配置的而不是虚拟机如果直接将I/O的基址寄存器直接暴露给虚拟机可能会存在基址寄存器冲突因此在物理设备透传的情况下我们也需要模拟寄存器给虚拟机 访问拦截 PMIO方式的访问拦截 虚拟机的基址寄存器是不同于物理机的基址寄存器的因此他们的IO端口可能就是不同的所以当虚拟机访问自己的IO端口时VMM需要将其截获并且将这个IO请求转发给物理设备真实的IO端口此时就会涉及到依次VM exit MMIO方式的访问拦截 MMIO下虚拟机访问IO设备直接访问的就是一个内存地址这个内存地址为GPA然后通过内存虚拟化将GPA转为HPA对于IO设备也是需要在VMM上建立IO GPA到IO HPA的映射关系使得虚拟机访问IO设备就可以直接通过映射表来完成 数据传输 DMA重映射 虚拟机内部的设备驱动是期待这个设备支持DMA功能的 在DMA的视角下它只知道虚拟内存的地址空间它就会往虚拟地址中读写数据但是实际上这个内存地址是错误的应该写入的地址是物理机内存地址 因此就需要做到DMA的重映射这个功能是由介于设备控制器和内存之间的一个模块叫做IOMMU实现的该模块属于CPU的功能 IOMMU介绍 IOMMU是一个内存管理单元主要针对外设访问系统内存时进行内存管理 IOMMU的主要功能包括DMA Remapping地址重映射和Interrupt Remapping中断重映射 对于DMA RemappingIOMMU可以将一个设备访问地址转换为存储器地址对于虚拟机的情况来说就是可以实现GPA与HPA的转换 即在IOMMU中会有一个表项这个表是通过一个一个的PCI设备来作为索引的并且能够导向虚拟机的信息包含IO GPA到IO HPA的映射信息这个索引到虚拟机信息的映射是由负责分配虚拟机内存的VMM建立的 具体IOMMU工作原理 在整个PCI架构中每个设备都是有自己的一个唯一的标识符类似于身份证我们叫做Src ID当设备通过这个PCI总线进行通信的时候会携带上自己的Src ID而I/O设备和内存之间通信也一样 当DMA发送请求时会被IOMMU给截获并找到对应PCI设备的Src id然后通过IOMMU的映射就可以将这个DMA控制器所访问的GPA内存地址转换为HPA从而DMA的操作也就可以访问到一个正确的内存地址了 当DMA完成操作之后会产生中断信息告诉虚拟机IO操作完成 特点 这种方式从性能上来说是最优先的但这种方式需要比较多的硬件资源 这种方式一旦一个设备被虚拟机占用了其他虚拟机就无法使用该设备 SR-IOV方式 设备透传无法达到单个设备共享给多个虚拟机使用的目的因为IO设备是依据挂载给单个主机使用而设计的于是可以在IO设备设计时就考虑到将其运行在虚拟化环境中的使得一个I/O设备支持共享给多个虚拟机来使用这就是SR-IOV技术 SR-IOV的基本概念 在宿主机上挂载一个支持SR-IOV的高性能网络设备需要CPU支持IOMMU SR-IOV是将设备的虚拟化放到了硬件层面来实现从而减少了软件层面的开销 SR-IOV单独引入了两种软件实体功能 Physical FunctionPF PF包含轻量级的PCIE功能 一个PF能够作为一个PCIE设备来供这个宿主机所配置 一个SR-IOV设备上可能会有多个PF本次只考虑单个PF的情况 作用为虚拟机提供设备访问功能和全局贡献资源配置的功能 VFVirtual Function VF也包含轻量级的PCIE功能我们可以将这个VF透传给一个虚拟机所使用因此多个VF便可以拓展给不同的虚拟机这样就可以达到将整个SR-IOV设备共享给多个虚拟机的目的 在一个PF上可以衍生出来多个VF一个PE最多有64000个与其相关联的VF 作用为虚拟机提供接口、进行数据的发送与接收功能、与PE通信完成全局相关配置 具体的工作流程 虚拟机和VF设备的交互与IO直通的交互类似只不过SR-IOV是多个虚拟机共享同一个I/O设备 既然VF可以作为一个正常的PCIE设备透传给虚拟机使用那是否会遇到在使用一个正常的物理设备透传给这个虚拟机所需要的问题也就是IO直通所遇到的问题 答案是会遇到 我们知道IO直通场景下有一个重要的阶段IO数据的传输当DMA请求时需要通过IOMMU模块将GPA翻译为HPA来完成内存的读写 VF也是一样的它支持DMA功能也会通过IOMMU将GPA转为HPA从而找到宿主机上正确的HPA将IO相关的数据写入到目标内存地址中 因此一个VF设备也会需要有一个自己全局唯一的设备标识符Src IDIOMMU就是通过这个Src ID找到这个VF挂载的虚拟机找到这个虚拟机的IO内存地址的映射从而找到这个GPA所映射的HPA 特点 只是SR-IOV设备本身是基于虚拟化环境设计的因此他可以做一些专门针对虚拟化环境的优化例如可以增加一个本地的高速缓存存放GPA到HPA的映射从而在某些场景下就省去了查询IOMMU的功夫 建立了基于PFVF的标准 性能最高几乎和直接使用硬件I/O设备没有区别
http://www.zqtcl.cn/news/88727/

相关文章:

  • 小型网站建设公司网络营销产品策略树状图
  • 怎么样提高网站排名工程信息价查询网站
  • app开发网站建设公司深圳有哪些传媒公司
  • 建设外贸网站公司简介免费自助建站哪个平台好
  • 做石材一般用哪些网站推销珠海网络公司网站建设
  • 导航网站搭建佛山找人做网站
  • 泷澄建设集团网站做徽章标牌的企业网站
  • 江西中创建设有限公司网站hao123网址之家官网
  • 上海网站排名推广seo实战技巧
  • 微网站 方案宝塔软件做网站
  • 公司网站规划怎么做网站广告代理商
  • 网站建设分金手指排名十三wap网站开发协议
  • 微网站建设及开发网站运营和推广
  • wordpress站点标题字体主题网站建设
  • 精美驾校企业网站模板东莞互联网企业
  • 网站做第三方登录界面如何在自己的网站上做友情链接
  • 网站如何选择关键词做网站上传视频
  • 深圳网站开发技术网站制作什么做
  • 公司网站建设请示微信公众号运营怎么做
  • 建设一个网站 需要提供什么电商网站建设讯息
  • 51个人网站怎么打开网站建设设计技术方案模板
  • 湛江seo网站管理深圳建网站 (报价)
  • 丰县徐州网站开发建设网站的申请信用卡分期付款
  • 怎么在阿里云建设网站广告公司logo
  • 网站开发与设计培训seo优秀网站分析
  • 网站建设前期规划方案范文西宁休闲娱乐场所
  • 广州自助网站设计平台广州手机模板建站
  • html做网站怎么链接音乐清理wordpress模板
  • 济南品牌网站制作便宜福田庆三案例照
  • 上海的网站建设公司中小企业网络设计论文