2021.03.10

总结:本质问题是消息传递由硬件完成还是软件完成。(多核共享内存其实是由硬件完成消息传递。)文章纲要性叙述多,详细得看后续文章、看代码。


We argue that the challenge of future multicore hardware is best met by embracing the networked nature of the machine, rethinking OS architecture using ideas from distributed systems.

Introduction

传统OS的优化在异构ISA OS中不适用比如:

  • cache层次
  • 内存一致性模型
  • 本地/远端cache访问差异

上述技术问题的根因shared-memory kernel。

设计multikernel的3个宗旨:

  1. 跨核通讯都是显式的
  2. OS结构和硬件无关
  3. 状态并非共享而是副本

Motivations

本节列举到诸多相关工作

Systems are increasingly diverse

Cores are increasingly diverse

The interconnect matters

cache-coherent多处理器在硬件上已是消息传递,而不是共享互联。文章引用了AMD的Opteron北桥架构和Intel的QuickPath架构。

硬件上各个处理器更像是网络。消息路由由硬件完成,操作系统仍然看到各个处理器访问统一的内存。

未来的趋势是一个设备中芯片更少,更多处理器集中在一个芯片中。因此芯片中便会出现一个网络。

Messages cost less than shared memory

竟然引经据典,提到了1978年关于操作系统两个对立模型的理论。

Cache coherence is not a panacea

引用多个例子说明cache一致性在多核并不是万灵药。

Messages are getting easier

Discussion

The multikernel model

Make inter-core communication explicit

Make OS structure hardware-neutral

分成2部分:

  1. 硬件相关:消息传递硬件机制、硬件接口,我觉得可以统一为ISA
  2. 硬件无关

View state as replicated

处理器热插拔!有意思!

Applying the model

Implementation

Test platforms

4个电脑,配置参数暂时还不太看得出啥门道。

System structure

CPU drivers

CPU driver的特性

  • event-driven
  • single-threaded(大概是为了做实验简单)
  • non-preemptable(大概是为了做实验简单)
2021.03.16

Monitors

特性

  • single-core
  • user-space processes (schedulable)

功能

  • 同步各个核的信息:内存分配表,地址空间映射表
  • 建立跨进程通讯
  • 管理各个核的功耗

Process structure

dispatcher是啥?

Inter-core communication

最底层抽象为消息传递,在x86-64平台使用cache-coherent内存实现。

:URPC是核间通讯,IPC是核内通讯(同一个核的进程间),有关于这俩方法的引用文献

Memory management

内存数据类型和归属(Unix用file descriptor,Windows用object handler),barrelfish使用seL4模型(有引用文献)。

提到了他们的试错经验(这个大概是MicroSoft Research看重的吧)hindsight——capability复杂且多余。

需要核有相同的访存顺序强度?

Shared address spaces

  • 共享页表
    • 共用一个页表:快
    • 复制多份,靠消息同步:可以适用于各个核的页表格式不同

capability和dispatcher是啥?文章似乎没有说明。

Knowledge and policy engine

根据数据和测试对网络配置进行调整。

Experiences

  • CPU driver和monitor分离使得系统调用先要经过RPC到CPU driver然后才是真正的系统调用。优点是设计方便,缺点是额外RPC开销。
  • 网络栈还不够高效,只是因为还未深入设计,有参考文献。
  • multikernel与当前OS设计的区别在于,在multikernel设计里很多数据并不共享。

Evaluation

测评方向

  • baseline perfermance
  • scalability with cores
  • adaptability to different hardware
  • 探索高效的消息传递抽象
  • 高效的模块化设计 以应对不同拓扑的网络

从一些小例子测试