- 主题:CPU能否为操作系统优化呢?
我现在的理解是context switch很慢。比如一个进程调用一个功能,如果是宏内核,就是一个调用,几个时钟。如果是进程,据说是50-80个时钟。
可不可以多个CPU核心,有一个专门负责这个功能的。但是如果有多个客户来调用,那还是得等,比同一个CPU核心进行context switch还慢。
context switch到底什么原因慢呢?是需要存储的东西太多了吗?
【 在 yangtou 的大作中提到: 】
: 微内核增加了额外的ipc开销,ipc需要context switch
:
: #发自zSMTH@NOP-AN00
--
FROM 98.42.143.*
CPU 内部的超线程就是 context switch,内部有多套寄存器相互切换。如果 CPU 能够把这个功能暴露出来给操作系统,而不是由 CPU 自动切换,那么你说的加速就有了。
【 在 bihai 的大作中提到: 】
: 我现在的理解是context switch很慢。比如一个进程调用一个功能,如果是宏内核,就是一个调用,几个时钟。如果是进程,据说是50-80个时钟。
: 可不可以多个CPU核心,有一个专门负责这个功能的。但是如果有多个客户来调用,那还是得等,比同一个CPU核心进行context switch还慢。
: context switch到底什么原因慢呢?是需要存储的东西太多了吗?
: ...................
--
FROM 47.243.39.*
是多余的ipc和context switch,多了的东西,优化不掉,优化掉就是宏内核了,那还折腾什么。
至于慢不慢,context switch是不可能比乘法指令快的。宏内核的内核也是跑在多个核上的,跑在一个核上岂不是更慢?
【 在 bihai 的大作中提到: 】
: 我现在的理解是context switch很慢。比如一个进程调用一个功能,如果是宏内核,就是一个调用,几个时钟。如果是进程,据说是50-80个时钟。
:
: 可不可以多个CPU核心,有一个专门负责这个功能的。但是如果有多个客户来调用,那还是得等,比同一个CPU核心进行context switch还慢。
: ...................
--来自微微水木3.5.12
--
FROM 116.224.249.*
操作系统的context和cpu线程没啥关系吧,又不是只关联几个通用寄存器和PC。再说了,一个核一个线程还不跑了?
【 在 hgoldfish 的大作中提到: 】
: CPU 内部的超线程就是 context switch,内部有多套寄存器相互切换。如果 CPU 能够把这个功能暴露出来给操作系统,而不是由 CPU 自动切换,那么你说的加速就有了。
:
: 【 在 bihai 的大作中提到: 】
: ...................
--来自微微水木3.5.12
--
FROM 116.224.249.*
如果暴露出来当然得改 CPU 设计了。
按我说的设计的话,CPU 在操作系统看来会有无限多个核心。所谓调度线程,在操作系统看来,不过是把一个 CPU 核心标志为运行和暂停,不用保存寄存器,每次切换都可以省下大量的 CPU 时钟周期。
【 在 yangtou 的大作中提到: 】
: 操作系统的context和cpu线程没啥关系吧,又不是只关联几个通用寄存器和PC。再说了,一个核一个线程还不跑了?
: --来自微微水木3.5.12
--
FROM 140.224.34.*
wild的想法,你看来要把线程context保存在芯片里面了,那还要不要超标量乱序执行了,流水线状态也一起保存吗?那你准备支持几个线程呢,准备为此还有调度逻辑等花费多少面积,这cpu能跑到多高频率?如果保存到ram里面?那好了,我们就差不多回到了软件context switch了。
再者,为了context信息已经花费这么多了,干嘛还要运行和暂停,一直并行运行不好吗,那这不就是现在cpu的多线程嘛。
【 在 hgoldfish 的大作中提到: 】
: 如果暴露出来当然得改 CPU 设计了。
:
: 按我说的设计的话,CPU 在操作系统看来会有无限多个核心。所谓调度线程,在操作系统看来,不过是把一个 CPU 核心标志为运行和暂停,不用保存寄存器,每次切换都可以省下大量的 CPU 时钟周期。
: ...................
--来自微微水木3.5.12
--
FROM 116.224.249.*
没错啊。CPU 直接模拟成无限核心。操作系统只管往 CPU 里面调度线程。
但是线程碰到文件 IO,或者两个线程进入临界区,它得暂停线程的执行,这也没错。这时候操作系统给 CPU 一个特别的指令什么的暂停执行,检测某个寄存器位才继续。
【 在 yangtou 的大作中提到: 】
: wild的想法,你看来要把线程context保存在芯片里面了,那还要不要超标量乱序执行了,流水线状态也一起保存吗?那你准备支持几个线程呢,准备为此还有调度逻辑等花费多少面积,这cpu能跑到多高频率?如果保存到ram里面?那好了,我们就差不多回到了软件context switch了。
: 再者,为了context信息已经花费这么多了,干嘛还要运行和暂停,一直并行运行不好吗,那这不就是现在cpu的多线程嘛。
: --来自微微水木3.5.12
: ...................
--
FROM 47.243.39.*
我说的不是很清楚,这个vm指的是解释型角本语言的jit,比如js的K8,也包括没jit的解释器。
也就是石更件搞搞优化,把js,lisp之类的跑快点。
【 在 dighole 的大作中提到: 】
: intel 的VT-X不就是干这个的吗
: --
发自「今日水木 on PBCM10」
--
FROM 117.147.20.*
MIPS Multi-threading extention
【 在 yangtou 的大作中提到: 】
: wild的想法,你看来要把线程context保存在芯片里面了,那还要不要超标量乱序执行了,流水线状态也一起保存吗?那你准备支持几个线程呢,准备为此还有调度逻辑等花费多少面积,这cpu能跑到多高频率?如果保存到ram里面?那好了,我们就差不多回到了软件context switch了。
: 再者,为了context信息已经花费这么多了,干嘛还要运行和暂停,一直并行运行不好吗,那这不就是现在cpu的多线程嘛。
: --来自微微水木3.5.12
: ...................
--
FROM 183.193.60.*
有什么特别之处吗,这不就是现在普遍的多线程吗?
【 在 rockyzhang 的大作中提到: 】
: MIPS Multi-threading extention
: 【 在 yangtou 的大作中提到: 】
: : wild的想法,你看来要把线程context保存在芯片里面了,那还要不要超标量乱序执行了,流水线状态也一起保存吗?那你准备支持几个线程呢,准备为此还有调度逻辑等花费多少面积,这cpu能跑到多高频率?如果保存到ram里面?那好了,我们就差不多回到了软件context switch了。
: ...................
--来自微微水木3.5.12
--
FROM 116.224.249.*