[發(fā)明專(zhuān)利]在多個(gè)處理器之間快速轉(zhuǎn)移工作負(fù)載有效
| 申請(qǐng)?zhí)枺?/td> | 201780022012.6 | 申請(qǐng)日: | 2017-03-24 |
| 公開(kāi)(公告)號(hào): | CN108885559B | 公開(kāi)(公告)日: | 2021-12-03 |
| 發(fā)明(設(shè)計(jì))人: | O·卡甘 | 申請(qǐng)(專(zhuān)利權(quán))人: | 微軟技術(shù)許可有限責(zé)任公司 |
| 主分類(lèi)號(hào): | G06F9/48 | 分類(lèi)號(hào): | G06F9/48 |
| 代理公司: | 上海專(zhuān)利商標(biāo)事務(wù)所有限公司 31100 | 代理人: | 陳斌;胡利鳴 |
| 地址: | 美國(guó)華*** | 國(guó)省代碼: | 暫無(wú)信息 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 處理器 之間 快速 轉(zhuǎn)移 工作 負(fù)載 | ||
公開(kāi)了用于一旦對(duì)任務(wù)的需要被主CPU檢測(cè)到就預(yù)調(diào)度替代CPU的技術(shù)和系統(tǒng)。一個(gè)過(guò)程包括由在第一CPU上運(yùn)行的生產(chǎn)者線(xiàn)程檢測(cè)外部中斷,由生產(chǎn)者線(xiàn)程獲取自旋鎖,以及響應(yīng)于獲取自旋鎖,由生產(chǎn)者線(xiàn)程向要在第二個(gè)CPU上運(yùn)行的消費(fèi)者線(xiàn)程發(fā)送事件。在由消費(fèi)者線(xiàn)程接收到該事件之際,消費(fèi)者線(xiàn)程獲取自旋鎖,該自旋鎖使消費(fèi)者線(xiàn)程“停滯”在循環(huán)中,直到該自旋鎖被生產(chǎn)者線(xiàn)程釋放。當(dāng)消費(fèi)者線(xiàn)程響應(yīng)于從生產(chǎn)者線(xiàn)程接收到該事件而正“喚醒”時(shí),生產(chǎn)者線(xiàn)程創(chuàng)建任務(wù)、發(fā)布該任務(wù)并且釋放自旋鎖,由此致使消費(fèi)者線(xiàn)程退出循環(huán)、檢索該任務(wù)并且執(zhí)行該任務(wù)。
背景
嵌入式設(shè)備通常用相對(duì)便宜的硬件(例如,有限容量的電源、需要較少能量的較慢組件,等等)來(lái)構(gòu)建。使用較便宜的硬件允許制造商經(jīng)濟(jì)地大規(guī)模生產(chǎn)這些嵌入式設(shè)備,但是經(jīng)濟(jì)上的節(jié)省是以降級(jí)的設(shè)備性能為代價(jià)的。例如,在多處理器系統(tǒng)中(且尤其是像樹(shù)莓派2(Raspberry Pi 2)這樣的被用于嵌入式設(shè)備的低級(jí)別多處理器平臺(tái)),從中斷僅僅在主中央處理單元(CPU)上被遞送,而非跨多個(gè)可用CPU被負(fù)載均衡的角度來(lái)講,體系結(jié)構(gòu)可以是非對(duì)稱(chēng)的。這可能導(dǎo)致在多處理器系統(tǒng)中的主CPU的過(guò)度利用和(諸)其他CPU的未充分利用。此外,許多嵌入式設(shè)備利用相對(duì)慢的直接存儲(chǔ)器訪(fǎng)問(wèn)(DMA)控制器。通常,程序員通過(guò)以下來(lái)變通地解決該約束:設(shè)計(jì)嵌入式軟件以使用CPU代替較慢的DMA控制器來(lái)執(zhí)行存儲(chǔ)器轉(zhuǎn)移操作,因?yàn)榇鎯?chǔ)器轉(zhuǎn)移操作可利用CPU來(lái)被更快速地執(zhí)行。這可能給主CPU帶來(lái)更多的工作負(fù)載,因?yàn)橹鰿PU被完全地占用達(dá)存儲(chǔ)器轉(zhuǎn)移操作的歷時(shí)并且不可用于接收中斷。
當(dāng)前操作系統(tǒng)可通過(guò)在多處理器系統(tǒng)中將任務(wù)調(diào)度到(或?qū)⑷蝿?wù)轉(zhuǎn)移至)替代CPU來(lái)緩解這些問(wèn)題,這減輕了主CPU上的一些負(fù)擔(dān)。例如,設(shè)備驅(qū)動(dòng)器和/或操作系統(tǒng)(OS)組件可通過(guò)以下來(lái)在各CPU之間轉(zhuǎn)移任務(wù):利用在第一CPU上運(yùn)行的“生產(chǎn)者”線(xiàn)程創(chuàng)建任務(wù),并且利用在第二CPU上運(yùn)行的“消費(fèi)者”線(xiàn)程執(zhí)行該任務(wù)。然而,從生產(chǎn)者線(xiàn)程發(fā)信號(hào)通知消費(fèi)者線(xiàn)程執(zhí)行任務(wù)的時(shí)間開(kāi)始,到消費(fèi)者線(xiàn)程“喚醒”并且實(shí)際上準(zhǔn)備好執(zhí)行任務(wù)的時(shí)間為止存在顯著的延遲。該延遲可由喚醒消費(fèi)者線(xiàn)程和使消費(fèi)者線(xiàn)程準(zhǔn)備好執(zhí)行任務(wù)中的固有調(diào)度等待時(shí)間導(dǎo)致。例如,消費(fèi)者線(xiàn)程要花費(fèi)時(shí)間來(lái)從系統(tǒng)存儲(chǔ)器加載堆棧和多個(gè)頁(yè)面,以便使其自己準(zhǔn)備好執(zhí)行任務(wù)。執(zhí)行這些“加載”操作所花費(fèi)的時(shí)間可致使可辨識(shí)的性能降級(jí)。許多嵌入式設(shè)備(諸如執(zhí)行時(shí)間嚴(yán)格的(time-critical)操作的控制設(shè)備(例如,機(jī)械臂))可以從更高性能OS中受益。
概述
本文中所描述的是用于一旦對(duì)任務(wù)的需要被主CPU檢測(cè)到就預(yù)調(diào)度替代CPU的技術(shù)和系統(tǒng)。預(yù)調(diào)度替代CPU可包括在向?qū)⒈挥糜趫?zhí)行任務(wù)的消費(fèi)者線(xiàn)程提供相關(guān)信息之前發(fā)送事件——以喚醒要在替代CPU上運(yùn)行的消費(fèi)者線(xiàn)程。以這種方式預(yù)調(diào)度替代CPU最小化或消除了在對(duì)任務(wù)的需要在生產(chǎn)者線(xiàn)程上下文中出現(xiàn)(被檢測(cè)到)的時(shí)刻與該任務(wù)在消費(fèi)者線(xiàn)程上下文中被執(zhí)行的時(shí)刻之間的延遲,該消費(fèi)者線(xiàn)程運(yùn)行在替代CPU上。在各CPU之間轉(zhuǎn)移任務(wù)方面的延遲的降低或消除對(duì)于低端嵌入式設(shè)備而言是特別地有用的。
在一些配置中,消費(fèi)者線(xiàn)程可停滯在非優(yōu)先搶占的“自旋鎖(spinlock)”中。自旋鎖是一種同步原語(yǔ),其致使嘗試獲取它的線(xiàn)程在循環(huán)中等待(“自旋”),同時(shí)重復(fù)地檢查該自旋鎖是否被釋放(或可用于被獲取)。由于線(xiàn)程保持活躍但沒(méi)有正在執(zhí)行有用的任務(wù),因此對(duì)這樣的自旋鎖的使用是忙等待(busy wait)狀態(tài)。相應(yīng)地,一種用于將任務(wù)從第一CPU轉(zhuǎn)移到第二CPU的過(guò)程包括:利用在第一CPU上運(yùn)行的生產(chǎn)者線(xiàn)程來(lái)檢測(cè)外部中斷,獲取自旋鎖,以及響應(yīng)于獲取自旋鎖來(lái)將事件發(fā)送到要在第二CPU上運(yùn)行的消費(fèi)者線(xiàn)程。在由消費(fèi)者線(xiàn)程接收到該事件之際,消費(fèi)者線(xiàn)程獲取自旋鎖,該自旋鎖使消費(fèi)者線(xiàn)程“停滯”在循環(huán)中,直到該自旋鎖被生產(chǎn)者線(xiàn)程釋放。當(dāng)消費(fèi)者線(xiàn)程響應(yīng)于從生產(chǎn)者線(xiàn)程接收到該事件而正“喚醒”時(shí),生產(chǎn)者線(xiàn)程創(chuàng)建任務(wù)、發(fā)布該任務(wù)并且釋放自旋鎖,由此致使消費(fèi)者線(xiàn)程退出循環(huán)、檢索該任務(wù)并且執(zhí)行該任務(wù)。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于微軟技術(shù)許可有限責(zé)任公司,未經(jīng)微軟技術(shù)許可有限責(zé)任公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201780022012.6/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
- 轉(zhuǎn)移支撐件及轉(zhuǎn)移模塊
- 轉(zhuǎn)移頭及其制備方法、轉(zhuǎn)移方法、轉(zhuǎn)移裝置
- 器件轉(zhuǎn)移裝置、轉(zhuǎn)移系統(tǒng)及轉(zhuǎn)移方法
- 轉(zhuǎn)移設(shè)備和轉(zhuǎn)移系統(tǒng)
- 轉(zhuǎn)移基板及制備方法、轉(zhuǎn)移裝置、轉(zhuǎn)移方法
- 轉(zhuǎn)移裝置與轉(zhuǎn)移方法
- 轉(zhuǎn)移系統(tǒng)和轉(zhuǎn)移方法
- 轉(zhuǎn)移膜、轉(zhuǎn)移組件和微器件曲面轉(zhuǎn)移方法
- 轉(zhuǎn)移頭、轉(zhuǎn)移裝置和轉(zhuǎn)移方法
- 轉(zhuǎn)移工具及轉(zhuǎn)移方法





