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

珠海网站建设哪家权威活泼的网站

珠海网站建设哪家权威,活泼的网站,沃尔玛跨境电商平台,青柠影视免费观看电视剧高清西瓜【引子】“The Last CPU”#xff08;https://doi.org/10.1145/3458336.3465291#xff09;#xff0c;ACM上的这一篇论文非常有趣#xff0c;核心思想是如果计算机的体系结构中没有了CPU#xff0c;那么#xff0c;操作系统又会是怎样的呢#xff1f;......不敢私藏https://doi.org/10.1145/3458336.3465291ACM上的这一篇论文非常有趣核心思想是如果计算机的体系结构中没有了CPU那么操作系统又会是怎样的呢......不敢私藏分享给大家。失去了才可能知道珍惜试图减压的时候不妨去读一点论文呵呵。CPU的设计目的很单一对存储的内存执行逻辑操作。协处理器如IO通道处理器、中断控制器、定位点处理器被添加到系统中以提供CPU没有的功能因为它们可以更快、更有效地执行某些特定的任务。它们通过允许CPU专注于应用程序逻辑和一般的系统功能来提高系统性能而更简单的协同处理器则负责处理普通的任务。1. 操作系统可以没有CPU吗对于高性能的应用程序而言情况是完全相反的。可编程设备负责应用程序逻辑而CPU只需要在这些任务中支持它们。众所周知比起在通用CPU上运行的软件应用程序专用的硬件可以执行更多的任务。加速器为许多应用程序如图像识别、计算机视觉关键值存储数据仓库大数据深度学习神经网络等通常用于降低整体系统成本并提高性能超出通用指令集的能力。在过去只有程序中计算最密集的部分被添加到加速器上。最近添加整个应用程序变得越来越普遍比如SSD、GPU和FPGA等加速器而CPU只需要用于初始设置和错误处理。我们相信系统已经发展到CPU是一个可以完全删除的附件额外的加速器功能似乎是一个可行的替代方案。为了提高性能已经对基本指令集进行了扩展以对通用CPU提供类似加速器的能力如矢量指令和加密。芯片现在正被用于进一步提高CPU的密度和降低制造成本。这些额外的功能使已经很复杂的CPU验证更加复杂化需要更多的硅面积这增加了CPU的基本成本和能源消耗而这些功能可能从未使用过。此外发布CPU的开发周期可能需要很多年时间这意味着现有的系统不会容易升级或更改。CPU设计的通用方法已经开始达到一些困难的限制。设计用于解决特殊问题的硬件组件正在变得普遍它们可以做更多的任务而且通常比通用CPU要快得多。从有效性来看系统管理类似一旦关键的处理任务被加载到其他硬件上许多cpu就过于强大和昂贵。以加速器为中心的集中控制系统CPU只处理初始化、协调和错误处理等普通任务。分散的控制打破了对昂贵的通用CPU依赖并可以提高性能。控制任务可以归结为简单的操作可以处理在其他硬件上与加速器和可编程设备的合作。操作系统提供了三个关键功能虚拟化其中包括多路复用和地址转换、隔离和资源管理。这些功能从集中式操作系统内核转移到一个减少由自管理的硬件组成的传统模型。缺少的组件是设备相互协作所需的系统管理总线。正是这个总线来执行对安全敏感的配置并负责任务生命周期管理初始化、设置、拆卸。引入系统管理总线作为一个专门的控制平面结合自管理设备为一个更简单的数据平面使从系统中完全删除CPU。操作系统仍然是控制平面但不再运行在CPU上。2. 打破对CPU的依赖如果没有了CPU计算机系统中的设备应该具有什么特性呢(1)设备必须是自管理的设备必须管理它自己的内部状态。它必须公开它所提供的服务并为服务的每个实例提供一个单独的上下文多路复用以确保应用程序之间的隔离。(2)设备必须自主通信设备必须能够发现它所需要的服务并请求它们而不依赖于外部实体来控制它。每个操作系统的功能——虚拟化包括多路复用和地址转换、隔离和资源管理都是创建一个安全和可扩展的系统所必不可少的。打破对这些功能的责任并将它们分配到设备和总线之间。因此该系统由系统总线协调的自管理设备组成。下面的说明解释了如何在硬件组件之间划分操作系统的职责。2.1 设备的自我管理一个设备负责运行应用程序逻辑并使用其他设备可能使用的一个或多个资源。一个设备可以使用任何资源类型的组合物理内存、FPGA块、GPU核心、存储空间等将每个服务都作为一个服务来公开。设备还可以提供系统维护的管理服务。例如在内部存储其应用程序的设备必须公开一个可用于上传新的二进制镜像的加载服务。自我管理意味着设备必须能够代表系统中的设备管理其资源的分配并以标准化的方式公开它们。要做到这一点每个设备必须实现逻辑来将其资源复用到多个实例中提供实例之间的隔离并处理错误条件。设备很可能会支持多个客户端或与任何特定服务的连接。例如公开一个系统的智能SSD可以允许多个i由多个应用程序同时打开。在这种情况下设备必须实现一种隔离机制以防止实例之间的数据泄漏。设备可以在硬件或软件中实现对其资源的隔离。硬件中的细粒度资源分配已经在RDMA控制器及网卡等设备中实现在这些设备中硬件被划分为多个独立公开和控制的实例。软件共享的方式在设备包含一个嵌入式CPU中很常见。无论实现方式如何该设备都必须能够以一种系统和标准的方式公开其功能以便希望使用该功能的其他设备易于使用。VIRTIO是用于从虚拟机管理虚拟设备的标准化协议。VIRTIO可以为从自我管理的设备中公开资源提供一个理想的接口。与其他协议类似它是基于一组内存描述符的单向队列的。硬件供应商已经开始生产符合VIRTIO标准的真正设备了其主要优点是许多与VIRTIO兼容的设备都可以使用一个驱动程序进行操作。以标准和一致的方式暴露所有资源和服务简化了使用这些设备所需的逻辑。VIRTIO协议能够跨不同级别的抽象nic、磁盘、控制台、套接字等描述广泛的设备。所有这些都以一种一致的方式运作。2.2 系统总线系统总线专门用于设备间的通信系统总线如图1所示作为控制平面使设备能够相互控制但不携带数据。系统总线只提供了一种用于设备通信的机制并且不包含任何策略没有实体看到整个系统也没有全局状态复制。该总线使设备能够以一种标准的方式通信其资源需求并使设备能够广播它们的能力以便其他设备可以发现它们。这是通过设备在总线上发送消息以请求诸如内存分配或打开文件之类的服务来实现的作为一个特权设备运行是维护虚拟化的机制。2.2.1 系统初始化当系统启动时系统中的所有硬件设备都会经历一段初始化期间在此期间它们可以执行自检。当设备确定它运行正常时它将向系统总线发送一条消息系统总线将记录它是活动的。之后该设备将加载其应用程序其中可能有很多。应用程序可以需要由其他设备提供的一个或多个服务。例如网卡可能需要读取存储在SSD上的文件中的数据。在设备可以使用一个资源之前它必须首先发现系统中哪些设备可以提供对该资源的访问。设备发现机制类似于即插即用套件或USB设备附件消息中的简单服务发现协议。2.2.2 地址翻译一个应用程序可以分布在许多设备上但唯一标识它的是它的虚拟地址空间。与在当前部署的系统中一样地址转换仍然是共享内存中数据隔离的基石。从安全的角度来看设备负责自己的映射不是一个好主意因为受损的设备可能会获得它未被授权的资源。因此特权系统总线有责任通过更新页表来创建虚拟-物理映射。同样也不能允许资源控制器直接访问其他设备的IO MMU因为这将导致安全漏洞。相反系统总线只有在特定资源的控制器指示设备时系统总线更新设备的页表。2.2.3 内存管理虚拟内存管理对于在同一应用程序的不同组件之间共享内存是必要的同时保护该内存免受其他应用程序的影响。这在很大程度上是通过IOMMU来完成的它可以从每个设备中访问物理内存就像今天通常要做的那样。在分配内存时系统总线提供了更新虚拟到物理映射的机制但不提供策略。映射由内存控制器设置内存控制器在内部为每个应用程序管理自己的分配表。这些映射被发送到系统总线系统总线为请求设备的IO MMU编写适当的页表。2.2.4 协议支持通过系统总线进行协调的设备将被要求遵守总线协议。这与遵守现有的总线协议没什么不同例如PCIe。每个设备都需要符合最低限度的行为来与其他设备进行互操作和共享服务。操作系统通过控制器特殊的接口与设备进行通信如USB控制器。设备和故障控制器已经通过设备上的硬件和软硬件参与了这些控制协议。这种通信将被更高层次的协议所取代以直接从一个设备请求服务。系统总线协议不会比前面提到的许多现有控制协议有更复杂的计算量或者更复杂的逻辑。因此目前存在的大多数设备和控制器将不需要对其硬件需求进行重大更改以支持系统总线。3. 数据平面接下来可能需要互连的两个不同的功能内存访问数据平面和设备连接控制平面。从系统设计和性能的角度来看这些功能应该是分开的。在传统的系统中CPU负责在初始化过程中设置地址空间。由于我们不能依赖于CPU所以在设置虚拟地址空间之前必须有一个独立的寻址设备的方法。PCIe通过通过物理地址总线、设备、功能寻址设备通过标准的节点空间和BAR区域提供内存访问和一定程度的设备协调部分地实现了这两个功能。如果大多数设备将支持多个虚拟地址空间每个应用程序一个那么他们必须能够选择每个内存操作所使用的虚拟地址空间。内存总线必须具有高吞吐量和低延迟而系统管理总线则不需要。另一方面系统管理总线必须能够处理消息这样它才能代表应用程序更新管理表。虽然设计一个包含这两种功能高速内存访问和消息解码的总线并不是不可能的但我们没有看到一个令人信服的理由来组合它们。有许多现有的系统互连似乎是很好的候选者如PCIe、CCIX、openCAPI 和CXL。3.1 通知通知是一种让设备表示需要注意的方法。这可能是由正常操作引起的例如通知一些请求的数据已经准备好了。它也可以用来表示一个错误的条件例如作为由于无效的虚拟地址而导致的DMA事务失败。对CPU的通知通常使用中断发送但也可以通过互连作为内存写入到一个特殊地址的方式发送。这类似于用于实现PCI的MSI消息信号中断的方法。3.2 缓存一致性在没有CPU的系统中缓存一致性具有不同的意义。高速缓存的目的是通过避免对主存的昂贵访问来提高CPU的性能。将缓存视为属于内存层次结构是很方便的这掩盖了大多数缓存驻留在同一个物理包中的事实。因此对于没有CPU的系统必须仔细考虑缓存和缓存一致性的位置和目的。由于缓存是设备的私有的如果设备只使用内存与其他设备共享数据缓存将不会提供太多好处。设备和应用程序肯定会继续使用大量的RAM并将大量利用设备中的缓存层次结构例如GPU。然而缓存一致性只在依赖于不同处理单元之间的隐式内存共享的编程模型中。许多分布式系统都依赖于显式的消息传递并完全丢弃一致性。第2节中提到的大多数互连都支持缓存一致性消息但不需要它们。简而言之每个设备都可以根据其硬件能力和应用程序的需要来选择是否参与系统的高速缓存一致性。4. 无CPU 操作系统的畅想某些智能网卡和智能ssd可以相对容易地通过监控软件进行增强没有的硬件组件是系统总线。为了完成这个无CPU 操作系统需要一个独立的内存控制器和互连控制器类似于英特尔的内存控制器Hub。畅想一下可以在CPU上运行的软件中模拟系统总线的操作。每个自我管理的设备都会像往常一样从系统总线发送和接收消息但这些消息将通过共享内存通过隧道传输到软件模拟器。该模拟器会拦截任何内存分配消息并相应地重新编程IO MMU。模拟器还需要扮演任何还无法嵌入到设备中的资源监视器的角色例如内存控制器。构建一个模拟的无CPU系统将允许回答关于这类系统的可行性、安全性和性能问题。为了尝试描述系统如何工作描述了一个假设的键值存储应用程序将如何在没有CPU的系统上工作。数据键和值存储在一个由智能SSD托管的文件中而操作获取、插入、更新等在智能网卡中进行处理。网卡通过监听套接字或RDMA通过网络向其他机器公开一个接口连接。图2显示了初始化序列在NIC中运行的KVS应用程序连接到SSD以访问其数据文件。网卡通过系统总线发送一条广播消息包含文件名以发现是哪个存储服务拥有该文件。SSD响应说它可以为该文件访问服务。网卡发送请求以打开服务包括授权令牌以访问该文件。SSD响应了连接详细信息和所需的共享内存量。网卡向内存控制器包括虚拟地址发送一个请求要求其分配共享内存。在收到来自内存的响应后系统总线对属于网卡的IO MMU进行编程允许其访问指定的虚拟地址的共享内存。网卡向系统总线发送另一条消息以授予SSD对共享内存的访问权限。然后网卡可以通过使用虚拟地址编程SSD中的VIRTIO队列来建立连接。IO MMU通过将设备访问的所有内存访问转换为虚拟内存空间来保护内存。要创建共享内存区域必须为IO MMU进行编程以便将两个设备使用的虚拟地址映射到相同的物理地址。在带有CPU的系统中操作系统内核负责内存管理因为它包含每个进程的地址空间的映射并且能够执行特权任务。一个应用程序将调用一个系统调用上为内核创建一个共享的内存映射。在没有CPU的情况下内存控制器负责跟踪每个设备的物理内存分配可以更新映射的系统总线。设备发送一条控制消息而不是系统调用。一旦该操作被内存控制器授权系统总线就会执行该操作。对内存区域的访问可以由拥有该区域的设备授予给另一个设备但必须首先由内存控制器授权。5. 畅想中的问题与挑战操作系统是非常复杂的系统无CPU 的操作系统也不例外。5.1 访问控制如果需要细粒度的访问控制则访问控制服务可以由智能存储控制器提供例如智能SSD。这将大致相当于在Linux上的“登录”程序和“密码”文件。对单个文件的访问控制由系统服务在提供该服务的设备上实现。希望打开文件的用户将通过控制台应用程序输入命令该应用程序将在从文件系统服务请求文件时使用该用户的标识符。类似地加载服务将微代码、加密软件或应用程序代码加载到设备也可以在替换敏感数据之前使用相同的身份验证服务。5.2 错误处理将应用程序加载到各种加速器之后如何解决处理编程中的错误呢现有系统依赖于CPU和操作系统来处理各种不指定的错误。对于无CPU 的操作系统必须更精确地确定将发生的错误类型以及如何处理它们。可恢复的错误是指那些不需要重置设备的错误。当转换硬件无法绑定映射时或者当试图访问没有正确权限的内存时就会导致页错误。在一个没有CPU的操作系统中IO MMU会将任何故障发送到其附加的设备上。每个设备都将负责适当地处理自己的故障重置服务或停止应用程序。故障模型并不比在具有集中式CPU的系统中更糟糕。主要的不同是错误处理的责任已经转移到设备本身而不是一个外部实体。类似地如果资源出现致命错误则该设备将负责处理该错误本身。它必须向使用该资源的任何使用者发送消息然后重置该资源应用程序的逻辑要负责从这个场景中恢复。如果整个设备发生故障则资源总线必须向系统中可能正在使用该故障设备的资源的所有其他设备发送消息。总线还可以向故障设备发送重置信号试图重新启动它。5.3 系统维护应用程序可以在正常操作期间写入日志文件。系统操作员可能希望定期查看这些日志以收集统计数据或调整一些参数。这样的机器很可能会被部署为数据中心中的服务器而不会有一个本地控制台。如果将许多这样的系统部署在一个数据中心中那么远程操作将是一个不错的选择因为一个远程控制台可以用于管理许多无CPU的系统可以通过网络由另一台机器通过远程访问服务查看这些日志。用户身份验证可以通过运行在任何设备上的身份验证服务来执行。5.4 可编程性对于一个不寻常的操作系统来说最大的问题可能是如何对它进行编程。需要注意的是编写一个应用程序以在可编程设备上运行该设备可以使用来自一个或多个其他设备的服务。这些应用程序是在具有开发环境的机器上开发的。由于每个设备都可以有一个不同指令集或实现语言因此将需要多个工具链。然而在许多情况下开发过程将只针对一个设备。以上面的KV-store应用程序为例所有应用程序逻辑都将被编译为在smartNIC上运行。smartNIC的开发环境将包括一个库它封装了系统总线的功能并提供服务发现、资源分配等功能。这取决于系统中的其他设备SSD、内存控制器等能够以适当的方式公开所需的资源。保护措施依赖于虚拟内存来防止对另一个应用程序的内存做未经授权的访问。设备的自身来提供在运行在同一设备上的应用程序之间的隔离。在设计诸如文件系统等常用服务时肯定还会出现其他安全问题。这与为NFS服务设计安全模型没什么不同向远程设备公开了文件的抽象。6. 小结对更高性能的需求正在推动系统设计向专门的硬件方向发展。单个设备正在快速发展以进行自我管理放松了对CPU和传统操作系统的依赖。无CPU的操作系统仅仅是一个思想实验一个系统中完全删除CPU。如此剧烈的变化迫使我们以一种新的方式考虑系统设计并就如何管理这样的一个系统产生影响。然而如果CPU不再是现有操作系统的中心组件会从根本上改变软件在CPU上的编写方式吗当然实际上有些问题在CPU上更容易解决。【关联阅读】一种编译器视角下的python性能优化操作系统中的系统抽象温故知新从计算机体系结构看操作系统从操作系统看Docker感知人工智能操作系统Linux 内核裁剪框架初探IoT中的Linux选择嵌入式Linux的网络连接管理老曹眼中的Linux基础计算机体系结构的一知半解计算机网络的元认知、实践与未来机器学习与微分方程的浅析
http://www.hkea.cn/news/14340574/

相关文章:

  • 域名对行业网站的作用网站备案 注意
  • 苏宁网站开发人员工资谷歌chrome安卓版
  • 网站在线咨询模块成都软件开发培训机构
  • 电子商务网站建设报价表有经验的中山网站建设
  • 个人网站备案名字重要吗如何使用ps做网站
  • 长沙制作网站公司吗神宜建设公司官网
  • 数据库网站建设多少钱网站正在升级建设中代码
  • html5技术可以制作网站吗wordpress时尚英文站
  • 公司注册查询重名南昌seo排名技术
  • 网站seo诊断技巧wordpress 自动保存 插件
  • 网站如何做单项链接网站建设 文库
  • 网站网站做维护犯罪美业拓客公司哪家好
  • 网站建设合同doc福建省建设资格管理中心网站
  • 高端网站欣赏外包是做什么的
  • 新房地产网站开发四川省建设监理管理协会网站
  • 网站用国外的服务器打不开建设营销型网站的目的
  • 山东网站建设空间网站建设合同技术开发合同
  • 郑州网站建设乛汉狮网络哪个平台可以免费发广告
  • 有没有做任务的网站吗怎样制作网页新手自学入门
  • 河北网站排名艾奇视觉网站建设
  • 网站域名注册步骤360搜索网站提交
  • 网站建设怎么找客源saas系统开发
  • 湖南省建设工程网站网站开发工作周记
  • 网页设计和网站编辑软件wap网站
  • 北京哪家网站建设公司比较好域名解析好了怎么做网站
  • 网站打不开电子商务网站建设与管理最新试卷
  • 银川专业做网站的公司网站基本模板
  • 数字媒体艺术全球大学排名一键优化在哪里打开
  • 做室内效果图网站wordpress html 过滤
  • 7个湖北seo网站推广策略梅州市五华县建设银行网站