TW200404253A - Thread dispatch mechanism and method for multiprocessor computer systems - Google Patents

Thread dispatch mechanism and method for multiprocessor computer systems Download PDF

Info

Publication number
TW200404253A
TW200404253A TW092102054A TW92102054A TW200404253A TW 200404253 A TW200404253 A TW 200404253A TW 092102054 A TW092102054 A TW 092102054A TW 92102054 A TW92102054 A TW 92102054A TW 200404253 A TW200404253 A TW 200404253A
Authority
TW
Taiwan
Prior art keywords
thread
processor
processors
threads
accept
Prior art date
Application number
TW092102054A
Other languages
English (en)
Other versions
TWI235952B (en
Inventor
Ricky Merle Peterson
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of TW200404253A publication Critical patent/TW200404253A/zh
Application granted granted Critical
Publication of TWI235952B publication Critical patent/TWI235952B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

200404253 玖、發明說明: 【發明所屬之技術領域】 本發明大致是關於電腦系統,特定言之,是關於多重 處理器電腦系統。 【先前技術】
自從進入了電腦時代以來,電腦系統就經由不斷的改 良,逐漸變得既精密且複雜,並且使用在多種不同的裝置 中。典型的電腦系統包含一硬體的組合,例如:半導體、 電路板,以及軟體,即大家熟知的電腦程式。隨著半導體 製程與電腦架構的演進,電腦硬體的效能更上一層樓,而 電腦軟體的技術也日趨精良,使得硬體的效能得以充分發 揮,這樣的配合,讓今日的電腦系統比之數年前而言更為 強大。
影響電腦系統效能的原因很多,有硬體、軟體和其他 動態的因素,例如:正在執行的總程式數目、網路流量、 快取的效率(cache efficiency)等等。一種大家所熟知可 增加電腦系統效能的方法,為提供可處理一電腦程式多個 不同部分的多線程執行方式。另一種大家熟知可增加電腦 系統效能的方法,為提供多重處理器,該多重處理器會平 行處理一電腦程式的部、分或不同的電腦程式,以分擔處理 之負擔。多線程和多重處理器的概念可相結合以達到效能 更進一步的提升。在該先前技術中,多重處理器原本每次 3 200404253 只能執行程式的一個線程。然而,最近的技術已進步到可 讓一多重處理器系統中的每一個處理器執行程式的多個線 程。例如,IΒ Μ公司生產與銷售的i系列(丨s e r丨e s c ο n d 〇 r)電 腦系統,就包含了多個設定參數,可讓硬體的多線程功能 啟用或關閉。當啟用時,每一處理器可執行兩個線程。然 而,目前的硬體多線程功能仍存有若干問題。
現今典型的電腦伺服器都必須支援Java。有一種用 來測量一台伺服器是否能有效地支援Java的標竿測試 (benchmark )稱為 SPECJBB2000。SPEC 為標準效能評 鑑公司(Standard Performance EValuati〇n corporation) 的縮寫’是一家規範標準的組織,其任務為建立、維持和 5忍可相關標平測试的標準集合以及現今電腦夺纟充效能$平I的 的測量標準。JBB2000是Java商業標竿測試(Java Business
Benchmark )的縮寫,該標竿測試於2000年6月問世。 SPECJBB2000目前已經成為業界使用標竿測試的不二選
擇。然而,SPECJBB2000標竿測試常常因系統上硬體多 線程功能的啟用而導致無法執行,其原因為sPECJBB20()() 在多個不同線程間的執行時間和交易處理遠查 ^手’有一規格 化的最大變動 (maximum variance) 值,士钟θ t · 仏坑疋一般業界 所稱的「線程散佈」(t h r e a d s p r e a d ),如果勃 术轨仃相似作業 的多個不同線程之執行時間和交易處理速率和, 、千释過所指定的 最大線程散佈,該標竿測試的執行就會失敗。人 現今大部分 包含硬體多線程的電腦系統都因過多線程散佛% 1叩開題,而 4 200404253
無法執行該 S P E C J B B 2 0 0 0標竿測試。因此,大部分的電 腦商都會在執行該 S P E C J Β Β 2 0 0 0標竿測試時把硬體多線 程的功能關閉。之所以會有過多線程散佈,是因作業系統 分配多個線程到多個可用處理器的方法所造成。若無一改 良的線程分配機構與方法以降低該線程散佈,則電腦業界 在應用電腦系統時,仍會遭遇過多線程散佈的問題(因此 也就無法利用SPEC JBB20 00標竿測試),除非關閉硬體多 線程功能,然而這樣同時也就無法享受硬體多線程所帶來 的效能提升優點了。 【發明内容】
根據較佳實施例,一線程分配機構會分配一多重處理 器電腦系統内的多個線程,該多重處理器電腦系統的硬體 多線程功能為啟用狀態,因此每一處理器可執行多個線 程。該線程分配機構會判斷哪些處理器為忙碌狀態而無法 再執行一多餘的線程,哪些處理器正執行一線程但無法再 接受一多餘的線程,以及哪些處理器是在閒置狀態。當多 個線程已經準備好要被分配時,它們首先會被分配到一閒 置的處理器,而不會被分配到正處理另一線程的處理器。 如果沒有閒置的處理器時,該線程就會被分配到正處理一 或多個線程,但仍有餘力處理該新線程的處理器。藉此方 式,本發明的線程分配機構與方法大大改善了多個線程間 回應時間的一致性,而與先前技術的分配線程方法相較, 5 200404253 也能有更高的處理能力。 前述的内容以及本發明的其他特徵和優點,將會在以 下對本發明的較佳實施例描述中清楚呈現,並且會利用圖 示加以說明。 【實施方式】 1 . 〇 概述
本發明是關於在一多重處理器電腦系統中,硬體多線 程功能啟用下之線程分配。由於有些人並不熟悉多線程系 統、多重處理器系統、硬體多線程和先前技術的線程分配 機構與方法,本概述將提供背景資訊以幫助暸解本發明。 多線程系統
電腦系統已經發展到讓執行程式(或工作)的多個線 程能被同時執行。在單處理器系統中,該多個線程並無法 真正地被同時執行,因為只有一個處理器。然而,單處理 器系統的多線程功能可讓該系統多工處理。在一單處理器 系統中的 C P U排程器(s c h e d u 1 e r )會控制切換線程,使 得該多個線程好像被同時執行,並藉此讓 C P U可以同時 執行多個工作。 多重處理器系統 一般電腦系統的處理能力可藉由提供多個處理器增 6 200404253
加,因為該多個處理器可以同時處理不同的工作。早期的 多重處理器系統會分派單一的線程到每一處理器。在該先 前技術中,多重處理器系統的線程分配器(d i s p a t c h e r ) 可以有多種不同的運作模式,以支援每一處理器有單一線 程。其中最為人所熟知的方式是以循序的方式分派多個線 程到多個處理器。利用這種方式的系統,第一個線程會被 分配到第一個處理器;第二個線程會被分配到第二個處理 器,依此類推。如果所有的處理器都有線程在執行,則下 一個要被分配的線程就必須等待,直到有一個處理器可以 接受線程。另一個分配線程的方式為以隨機的方式挑選一 處理器,如果該處理器沒有執行另一線程時,就將一線程 分派至該處理器。還有另一個分配線程方式為挑選上次執 行過該線程的處理器。這種分配方式是基於處理器的親緣 性(a f f i n i t y ),其目的為上次執行該線程之處理器的快取 中可能已經載入所需的資訊。這些線程分配方法都只能應 用在多重處理器系統中,並且每一處理器只能執行單一線 程0 硬體多線程 最近的技術發展讓硬體多線程的概念得以實現,在一 多重處理器系統中的每一處理器可藉此功能執行多個線 程。這些系統的線程分配器與前述沒有硬體多線程功能之 系統使用相同的方法,即:循序、隨機和處理器親緣性。 7 200404253
一包含硬體多線程功能的系統使用相同的分配線程法,可 能會導致線程間執行時間和交易處理速率的變化(即「線 程散佈」)過大。例如,如果第二個線程被分配到正執行 另一線程的處理器,則該第二個線程的執行時間,在典型 的情形下會遠大於該第二個線程被分配到一未執行任何線 程之閒置處理器。基於以下這些原因,所以線程散佈的問 題顯得十分重要。第一,過多的線程散佈造成不一致的反 應時間。比方說一個電腦操作員從電話中得到一個指令, 並將該指令輸入一電腦系統中,若是每次執行一個指令的 時間都有很大的差異的話,該操作員將會感到非常苦惱。 如果該電腦系統此次費時一秒執行一指令,下次費時十分 之一秒,再下次又費時五秒,則操作員將會因該電腦系統 的回應時間不一致而無所適從。在這樣的情形下,反應時 間的一致性相對於反應時間的長短而言是更重要的。只要 該系統每次以相同的方式運作時,都能在人類知覺可忍受 的範圍内回應,則使用者就會認為電腦系統運作正常,並 且感到滿意。 線程散佈最小化之所以重要的另一個原因是要讓電腦 系統可以通過標竿測I式,例如S P E C J B B 2 0 0 0。S P E C J B B 2 0 0 0 為電腦業界有名的標年測試’而嚴商都希望能通過該測 試,以證明他們的伺服器可以有效地執行Java程式。 還有另一個原因與應用程式在執行時間内如何運作有 關,仍顯示出線程散佈最小化的重要性。如果該應用程式 200404253
有很密集的i/o,則線程散佈就不是一個重要的問題,因 為在I/O作業間的時間片段是相對較小的,因此在人類知 覺或系統效能上不會有很大的影響。然而現在有許多應用 程式在每次I/O作業時都會佔用更多CPU週期,例如Java 應用程式,使得不同的線程執行時間會大大影響電腦系統 的效能。例如,假設一家公司在晚上作備份的工作,而此 備份工作必須在早上 8 : 0 0完成,也就是員工上班時該 線程散佈會讓一線程在早上 5 : 0 0完成,而另一線程必須 到早上 9:0 0才能完成。本例中,此二個線程的處理時間 平均起來,應於早上 7:0 0可全部完成。然而,該線程散 佈產生了讓人無法接受的結果,該備份作業因為第二個線 程之故’無法在貝工早上 8:0 0上班時冗成。因此’線程 間執行時間和交易處理速率(即「線程散佈」)的一致性, 對現今許多的應用程式而言是相當重要的。本發明能讓一 硬體多線程功能啟用之多重處理器系統的線程散佈大幅降 低0 2.0詳述 較佳實施例提供一多重處理器系統内分配線程之機構 與方法,該多重處理器系統有啟用硬體多線程功能,利用 該機構與方法可大大減少線程散佈(即多個不同線程間的 執行‘時間和交易處理速率變異值)。其方法為檢測哪些處 理器是閒置的、哪些正忙於處理一或多個線程,但仍可接 9 200404253
受另一線程,以及哪些已經達到其最大的線程處理量。當 有一線程需要被分配時,會將其分配至一閒置的處理器, 如果有的話。如果沒有閒置的處理器,該線程會被分配到 一處理最少線程的處理器。如此一來,執行不同線程的時 間差異會大幅的降低,使得根據該較佳實施例,啟用硬體 多線程功能的一多重處理器系統能通過S P E C J B B 2 0 0 0標 竿測試,並且讓多個線程間的回應時間和處理能力更為一 致。 參考第1圖,電腦系統1 〇 0為根據本發明較佳實施例 之一裝置的合適實施例。電腦系統1 0 0是一 1 B M i系列 (i S e r i e s)的電腦系統,特定言之是一 C ο n d 〇 r電腦系統,
其支援硬體多線程功能。然而,習知技藝人士將會明暸本 發明之機構與裝置同樣適用在任何電腦糸統’無論該電腦 系統是一複雜的多人運算裝置、一單人的工作站,或是一 嵌入式控制系統。如第1圖所示,電腦系統1 0 0至少包含 多個處理器(例如:處理器Π 0、1 1 2和1 1 8 ),一主記憶 體120,一大量資料儲存介面130,一顯示介面140,和 一網路介面1 5 0。這些系統原件利用一系統匯流排1 6 0相 互連接。大量資料儲存介面1 3 0會將大量資料儲存裝置(例 如一直接存取儲存裝置155 )與電腦系統100相連。直接 存取儲存裝置1 5 5之一特殊類型為一可讀和可抹寫的光碟 機,可利用其儲存資料或從光碟1 9 5讀取資料。 根據該較佳實施例之主記憶體1 2 0内包含資料1 2 1和 10 200404253
一作業系統1 2 2。資料1 2 1表示電腦系統1 0 0内任何程式 的任何輸入或輸出資料。作業系統1 2 2類似一業界知名的 多工作業系統OS/400 ;然而,習知技藝人士將會明瞭本 發明之範疇並未侷限在任一作業系統中。該較佳實施例的 作業系統122包含一硬體多線程啟用/停用機構123,系 統管理者可將硬體多線程功能啟用或關閉。在iSeries Condor電腦系統中,啟用硬體多線程表示每一處理器可 執行兩個線程。當硬體多線程功能停用時,每一處理器只 可執行一線程。作業系統1 2 2包含一線程分配器1 2 4,其 可將線程分配到可用的處理器,使得執行多個不同線程的 時間差異最小化。作業系統1 22也包含一處理器狀態追蹤 器1 2 5,其可追蹤系統中所有處理器的狀態(例如:1 1 0、 112、…、118)。
電腦系統1 0 0利用知名的虛擬定址機構,讓電腦系統 1 0 0的程式在存取如主記憶體1 2 0和直接存取儲存裝置1 5 5 等多個小的儲存裝置時,就好像在存取一個大的儲存裝 置。因此,當資料1 2 1和作業系統1 2 2在主記憶體1 2 0時, 習知技藝人士將會明暸這些項目不必在同時都全部存在主 記憶體12 0中。有一點需要強調的是,此處所稱之「記憶 體」大致是指電腦系統1 〇 〇全部的虛擬記憶體,而且可能 包含其他與電腦系統 1 〇 〇相連接之電腦系統的虛擬記憶 體。 每一處理器(例如:Π 〇、1 1 2、…、1 1 8 )可能由一 11 200404253
或多個微處理器和/或積體電路構成。每一處理器執行存 在主記憶體1 2 0内之程式指令。主記憶體1 2 0儲存每一處 理器可能存取之程式和資料。當電腦系統1 〇 〇啟動時,其 中一個處理器會先執行啟動作業系統1 2 2的程式指令。作 業系統1 22是一種複雜的程式,其管理電腦系統1 00的資 源。處理器1 1 0、主記憶體1 2 0、大量資料儲存介面1 3 0、 顯示介面 1 4 0、網路介面1 5 0和系統匯流排1 6 0都是這些 資源的一部份。 雖然電腦系統1 〇 〇只顯示一系統匯流排,但習知技藝 人士將會明暸本發明也可能利用有多匯流排的電腦系統實 施。此外,每個較佳實施例中所使用的介面包含獨立及完 全程式化的微處理器,這些微處理器可分擔該處理器龐大 的處理運算量。然而,習知技藝人士將會明瞭本發明應用 在多個電腦系統時,均只利用I/O介面卡以執行類似的功 能。
顯示介面1 4 0係用來將一或多個顯示裝置1 6 5直接連 接到電腦系統1 〇〇。這些顯示裝置1 65可能是非智慧型(例 如簡易型)終端機或是可充分程式化的工作站,系統管理 者和使用者可利用該顯示裝置與電腦系統 1 〇 〇溝通。然 而,當顯示介面1 4 0已經支援讓一或多個顯示裝置1 6 5間 可互相傳輸,電腦系統1 0 0就並非一定需要一個顯示裝置 1 6 5,因為使用者和其他處理程序所需之互動可藉由網路 介面1 5 0完成。 12 200404253
網路介面1 5 0係用來將其他電腦系統和/或工作站(例 如第1圖的1 7 5 )透過網路1 7 0連接到電腦系統1 0 0。不 管電腦系統 1 0 〇是如何與其他電腦系統和/或工作站連 接,也不管該網路連線 1 7 0是否利用現今的類比和/或數 位技術,或透過一些將來的網路機構形成,均不會改變本 發明的應用。此外,在一網路中可利用許多不同的網路通 訊協定。這些通訊協定是特殊的電腦程式,讓電腦可透過 網路1 70通訊。TCP/IP (傳輸控制協定/網際協定)就是 一網路通訊協定的適例。
要繼續對本發明之一完整功能的電腦系統作描述時, 還有一點很重要的是,習知技藝人士將會明暸本發明可以 如同一程式產品散佈在各種不同型式之中,而且無論實際 執行此分散作業的電腦可讀訊號負載媒體為何,均可應用 本發明。電腦可讀訊號的負載媒體適例包含:可記錄式的 媒體,例如:軟式磁碟片和光碟片(例如第1圖的1 9 5 ), 和傳輸式的媒體,例如數位和類比的通訊連結。 接下來描述先前技術之線程分配器的詳細功能5並且 將之與第1圖的線程分配器1 2 4功能作比較。如第1圖所 示,該較佳實施例的線程分配器1 2 4係根據一處理器狀態 追蹤器1 2 5所指示的該處理器狀態來運作,處理器狀態追 蹤器會持續追蹤系統中每一處理器的狀態。參考第2圖, 在先前技術中,一處理器只會有兩種狀態:1 )忙碡,表示 該處理器不能再接受另一線程,或 2)可接受一個線程, 13 200404253
表示該處理器可接受一個線程。這兩種是相斥的狀態。一 處理器不是忙碌就是可接受一個線程。以先前技術為例, 一硬體多線程啟停用的多重處理器i系列(i S e r i e s )電腦系 統中,一處理器在執行一線程時,就成為忙碌狀態,而如 果沒有執行線程就是可接受一線程的狀態。在同樣硬體多 線程啟用的i系列電腦系統中,如果一處理器執行兩個線 程就成為忙碌狀態,而在下列兩種情況之一就是可接受一 線程的狀態:1 )正處理一線程,或是 2)閒置。值得注意 的是先前技術在處理一線程(表示該處理器可再多接受一 個線程)和閒置(表示該處理器可接受兩個線程)間沒有 什麼區別。兩種情形都歸為「可接受一個線程」的狀態, 如第2圖所示。處理器# 1 21 0的狀態可能是忙碌2 1 2或
可接受一個線程214。處理器#2 220的狀態可能是忙碌222 或可接受一個線程224。處理器#N 290的狀態可能是忙碌 292或可接受一個線程 294。所有其他先前技術系統中的 處理器都同樣有此兩種狀態。 現在我們重新檢視第3圖中先前技術的方法3 0 0,一 先前技術多重處理器電腦系統係利用此方法分配線程。在 此方法 3 0 0開始時,有一線程需要被分配(步驟 3 1 0 )。 如果有一處理器可接受另一線程(步驟 3 3 0 = Y E S ),該 線程就會被分配至其中一個可接受另一線程的處理器(步 驟 3 40 )。如果沒有處理器可接受另一線程(步驟 3 3 0 = N 0 ),方法3 0 0的迴圈便會折返,直到一處理器將一線程 14 200404253
處理完成並且可以接受另一線程(步驟3 3 0二Y E S )為止。 先前技術系統所用之方法可用方法3 Ο 0來表示,不管該系 統有無硬體多線程啟用的功能。對於該i系列電腦系統, 如果硬體多線程功能停用,每一處理器只能處理單一線 程。如果硬體多線程功能啟用,每一處理器可處理兩個線 程。如果一處理器為閒置,其可接受兩個線程。如果一處 理器正執行一線程,其仍可接受另一個線程。因此,步驟 3 3 0的 Y E S 流程並無法區分正處理一個線程的處理器以 及沒有處理任何線程的處理器。所以步驟3 4 0的線程分配 法只注意是否該處理器仍可再接受一個線程。這樣會導致 即使有許多閒置的處理器可用,仍將線程分配給正執行一 線程的處理器。
在先前技術硬體多線程啟用的多重處理器電腦系統環 境中,有三種方法可利用在步驟3 4 0的線程分配◦第一種 是循序分配法,即是以循序的方式將多個線程分派到多個 能接受另一線程的處理器。為了舉例方便,我們假設一開 始沒有線程在執行。在此循序法中,該線程分配器會將第 一個線程分配到第一個處理器。當該線程分配器接收到第 二個線程時,由於第一個處理器能再接受另一線程,該線 程分配器就會將第二個線程分配到第一個處理器。此時, 第一個處理器正忙於執行第一和第二個線程,所以第三個 線程就會分配到第二個處理器。假設第四個線程要分配 時,頭三個線程正在執行,則第四個線程會分配到第二個 15 200404253 處理器。這樣的方法會不斷重複,讓每一處理器 處理器依序接收線程前,都接受了兩個線程。此 所謂的線程散佈(即線程間執行時間和交易處理 化)過大。 第二種是大家熟知的線程分配法是隨機選擇 程的處理器,並將一線程分配至該處理器。同樣 通常會造成在有閒置處理器的情況下,一處理器 兩個線程,導致線程散佈過大。 第三種是大家熟知的線程分配法是根據處 性,選擇之前處理過該線程的處理器,希望能利 處理器執行線程後儲存在快取内的資料,以利於 升。該法仍面臨上述兩種方法的缺點,即造成在 理器的情況下,一處理器仍要接收兩個線程,導 佈過大。這三種知名的分配法可用在第3圖的步騎: 這些方法均有線程散佈過大的問題,因它們無法 理一個線程的處理器和閒置的處理器。 參考第4圖,一根據該較佳實施例的處理器 器1 2 5會追蹤每一處理器三種可能的狀態,即: 表示該處理器無法再接受線程;2)工作中,但可 個線程,表示該處理器正執行一個線程,但仍可 個;以及3)閒置,表示該處理器目前沒有執行任 因此,在第4圖中,處理器#1 1 1 0可能的狀態為:批 工作中,但可以接受一個線程4 1 4 ;或閒置4 1 6。 在下一個 結果就是 速率的變 可接受線 的,此法 已接收了 理器親緣 用上次該 效能的提 有閒置處 致線程散 [340 中。 區分已處 狀態追蹤 1 )忙碌, 以接受一 接受另一 何線程。 碌 4 12 ; 同樣的,
16 200404253 處理器# 2 1 1 2的狀態也是同樣的三種4 2 2、4 2 4或4 2 6其 中之一;處理器#N 1 1 8的狀態也是同樣的三種 492、494 或4 9 6其中之一;而任何其他處理器的狀態也同樣是此三 種其中之一。
如此一來,該處理器狀態追蹤器1 2 5會追蹤一間置的 處理器與一正處理一線程但仍可處理另一個線程的處理器 間之差異,該線程分配器1 2 4可以更聰明的分配線程,以 減少線程散佈。參考第5圖,一根據該較佳實施例的方法 5 0 0由第1圖所示之線程分配器1 2 4執行較佳。在此方法 5 0 0開始時,有一線程需要被分配(步驟5 1 0 )。如果有一 閒置的處理器可用(步驟 520 ),該線程就會被分配到一 閒置的處理器(步驟5 2 2 )。如果沒有閒置的處理器可用, 但是有一能接受另一個線程的工作中處理器(步驟 5 3 0 = YES ),該線程會被分配到其中一個能接受另一個線程的 工作中處理器(步驟 5 4 0 )。如果沒有閒置的處理器可用 (步驟5 2 0 = Ν Ο ),也沒有能接受另一假線程的處理器(步 驟5 3 0 = Ν Ο ),方法5 0 0的迴圈便會折返,直到有一處理 器完成了其中一個線程,並且可以接受另一線程為止。 方法5 0 0大幅改善了該先前技術,因為任何處理器在 接受第二個線程之前,會先確定沒有閒置的處理器。在典 型的情形下,一閒置的處理器處理一個線程的速度會比一 處理器同時處理兩個線程快很多。因此,線程分配器124 可大幅改善該電腦系統1 〇 〇的效能,更重要的是,可減少 17 200404253 線程散佈,讓電腦系統1 〇 〇在硬體多線程啟用之下能通過 SPECJBB2000標竿測試,並且讓多個線程有更一致的執 行時間和交易處理速率。線程散佈的降低使得使用者更為 滿意,所要求的處理能力和回應時間也更容易達成。
該較佳實施例藉由區分閒置處理器,以及正處理一線 程但仍可接受另一線程的處理器,來提供更有效率的分配 線程方法。將線程先分配到閒置的處理器可大幅減少線程 散佈,因為只有在沒有閒置處理器時,才會將一線程分配 到正處理一個線程的處理器。如此更能有效利用處理器資 源,改善系統效能以及大幅減少線程散佈。 雖然本發明已藉由較佳實施例作了詳細的 描述,但習知技藝人士皆明瞭,可於在不逾 越本發明下述申請專利範圍的範疇下,對本 發、明進行修改。 【圖式簡單說明】 · 本發明的較佳實施例將會利用圖示加以說明,其中相 同的號碼標示表示相同的原件: 第1圖為根據較佳實施例的一裝置區塊圖; 第2圖為在先前技術的線程分配機構中,如何追蹤處 理器狀態的區塊圖; 第3圖為利用先前技術,在一多重處理器環境,硬體 多線程功能啟用下分配線程的方法流程圖; 18 200404253 第4圖為根據較佳實施例,如何在該線程分配機構中 追蹤處理器狀態的區塊圖;以及 第5圖為根據較佳實施例,在一多重處理器系統中, — 硬體多線程功能啟用下分配線程的方法流程圖。 【元件代表符號簡單說明】 1 0 0電腦系統 1 1 0、1 1 2、1 1 8 處理器 Φ 1 2 0主記憶體 1 2 1資料 122作業系統 1 2 3硬體多線程啟用/停用機構 1 2 4線程分配器 1 2 5處理器狀態追蹤器 1 3 0大量資料儲存介面 1 4 0顯示介面 1 5 0網路介面 Φ 1 5 5直接存取儲存裝置 1 6 0系統匯流排 1 6 5顯示裝置 1 7 0網路 1 7 5電腦系統和/或工作站 195光碟 2 0 0處理器狀態追蹤器 19 200404253 2 1 0處理器# 1 212、222、292、412、422、492 忙石彔 2 1 4、2 2 4、2 9 4可接受一個線程 220處理器#2 2 90處理器#Ν 3 0 0先前技術的方法
3 1 0開始一有一線程需要被分配 3 3 0處理器可接受另一線程嗎? 3 4 0將該線程分配至可接受另一線程的處理器 4 1 4、4 2 4、4 9 4工作中,但可以接受一個線程 416、 426 、 496 閒置 5 0 0較佳實施例的方法 5 1 0開始一有一線程需要被分配 5 2 0有閒置的處理器可用嗎? 5 2 2將線程分配到閒置的處理器 5 3 0有能接受另一線程的工作中處理器嗎?
540將線程分配到能接受另一線程的工作中處理器 20

Claims (1)

  1. 200404253 拾、申請專利範圍: 1. 一種裝置,其至少包含: 多個處理器,每一處理器具有執行多個線程的能 力;
    一耦合至該多個處理器之記憶體;以及 一線程分配機構,其儲存在該記憶體之中,並且 由該多個處理器的其中之一所執行,該線程分配機構 , 會判斷哪些處理器是閒置的,哪些處理器可再接受一 線程,以及哪些處理器無法再接受線程,如果存有閒 置的處理器,該線程分配機構會將一新線程分配至一 閒置的處理器。
    2.如申請專利範圍第1項所述之裝置’其中如果沒有任 何處理器是閒置的,而且如果至少該多個處理器的其 中之一可再接受一個線程,該線程分配機構會將該新 的線程分配至該多個能再接受一個線程之處理器的其 中之一。 3 .如申請專利範圍第1項所述之裝置,其中如果所有的 處理器均無法再接受一線程,該線程分配機構會等待, 直到該多個處理器的其中之一處理完一線程,使得有 一處理器能再接受一線程,然後該線程會被分配至該 21 200404253 能再接受一線程之處理器。 4. 一種在一包含多個可執行多個線程之處理器的電腦系 統中分配線程之方法,該方法至少包含下列步驟:
    (1 )判斷該多個處理器之每一者的狀態,其中如 果一處理器未處理任何線程,則其狀態為閒置;如果 該處理器正處理一或多個線程,但仍有餘力再處理另 一線程,則其狀態為可再接受一線程;以及如果該處 理器正處理其所能執行的最大線程數,則其狀態為無 法再接受線程;以及 (2 ) 如果存有閒置的處理器時,將一新線程分 配至該閒置的處理器。 5.如申請專利範圍第4項所述之方法,其更包含下列步 驟:
    如果沒有閒置的處理器,並且如果至少該多個處 理器的其中之一可再接受一個線程,該線程分配機構 會將該新的線程分配至該多個能再接受一線程之處理 器的其中之一。 6.如申請專利範圍第4項所述之方法,其更包含下列步 驟: 如果所有的處理器均無法再接受一線程,該線程 22 200404253 分配機構會等待,直到該多個處理器的其中之一處理 完一線程,使得有一處理器能再接受一線程,然後該 線程會被分配至該能再接受一線程之處理器。 7. 一種程式產品,其至少包含: (A ) —線程分配機構,該線程分配機構會判斷
    一多重處理器電腦系統中有哪些處理器是閒置的,哪 些處理器可再接受一線程,以及哪些處理器無法再接 受線程,如果存有閒置的處理器,該線程分配機構會 將一新線程分配至一閒置的處理器,其中每一處理器 可執行多個線程;以及 (B )負載有該線程分配機構之電腦可讀取訊號 的負載媒體。 一
    8.如申請專利範圍第 7項所述之程式產品,其中該電腦 可讀取訊號的負載媒體至少包含可記錄式媒體。~ 9.如申請專利範圍第 7項所述之程式產品,其中該電腦 可讀取訊號的負載媒體至少包含傳輸媒體。 1 0.如申請專利範圍第 7項所述之程式產品,其中如果沒 有閒置的處理器,並且如果至少該多個處理器的其中 之一可再接受一個線程,該線程分配機構會將該新的 23 200404253 線程分配至該多個能再接受一線程之處理器的其中之
    1 1 .如申請專利範圍第 7項所述之程式產品,其中如果所 有的處理器均無法再接受一線程,該線程分配機構會 等待,直到該多個處理器的其中之一處理完一線程, 使得有一處理器能再接受一線程,然後該線程會被分 配至該能再接受一線程之處理器。
    24
TW092102054A 2002-02-06 2003-01-29 Thread dispatch mechanism and method for multiprocessor computer systems TWI235952B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/068,599 US7487504B2 (en) 2002-02-06 2002-02-06 Thread dispatch for multiprocessor computer systems

Publications (2)

Publication Number Publication Date
TW200404253A true TW200404253A (en) 2004-03-16
TWI235952B TWI235952B (en) 2005-07-11

Family

ID=27659072

Family Applications (1)

Application Number Title Priority Date Filing Date
TW092102054A TWI235952B (en) 2002-02-06 2003-01-29 Thread dispatch mechanism and method for multiprocessor computer systems

Country Status (3)

Country Link
US (1) US7487504B2 (zh)
JP (1) JP4117202B2 (zh)
TW (1) TWI235952B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257516B2 (en) * 2001-09-20 2007-08-14 International Business Machines Corporation Method, apparatus, and program for eliminating thread skew in multithreaded performance benchmarks
US7797683B2 (en) * 2003-12-29 2010-09-14 Intel Corporation Decoupling the number of logical threads from the number of simultaneous physical threads in a processor
US7555753B2 (en) * 2004-02-26 2009-06-30 International Business Machines Corporation Measuring processor use in a hardware multithreading processor environment
US7216223B2 (en) * 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
FI118167B (fi) * 2004-10-26 2007-07-31 Konsultointi Martikainen Oy Menetelmä tehtävien jakamiseksi
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US7934216B2 (en) * 2005-10-03 2011-04-26 International Business Machines Corporation Method and system for load balancing of computing resources
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
US7865703B2 (en) * 2006-05-05 2011-01-04 International Business Machines Corporation Method and apparatus for executing instrumentation code within alternative processor resources
US20070260849A1 (en) * 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
US7814466B2 (en) * 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US7783866B2 (en) 2006-05-05 2010-08-24 International Business Machines Corporation Method and apparatus for executing instrumentation code using processor instructions
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US7941805B2 (en) * 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
WO2008053789A1 (en) * 2006-10-31 2008-05-08 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
JP5100310B2 (ja) * 2006-10-31 2012-12-19 株式会社半導体エネルギー研究所 半導体装置
US8122449B2 (en) * 2007-09-07 2012-02-21 International Business Machines Corporation Determining whether to retain or terminate a thread based on a minimum number of threads in a thread pool and a maximum number of threads allowed waiting on the channel
US8683471B2 (en) * 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device
US9703595B2 (en) * 2008-10-02 2017-07-11 Mindspeed Technologies, Llc Multi-core system with central transaction control
CN101403982B (zh) * 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
US9594599B1 (en) * 2009-10-14 2017-03-14 Nvidia Corporation Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors
US8402471B2 (en) * 2009-12-21 2013-03-19 At&T Intellectual Property I, L.P. Methods and apparatus to benchmark a computer system based on executing instructions using different numbers of threads
FR2957433B1 (fr) * 2010-03-11 2016-01-15 Bull Sas Procede de configuration d'un systeme informatique, programme d'ordinateur et systeme informatique correspondants
US8839256B2 (en) * 2010-06-09 2014-09-16 International Business Machines Corporation Utilization of special purpose accelerators using general purpose processors
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US9182807B2 (en) * 2012-12-31 2015-11-10 Hewlett-Packard Development Company, L.P. Systems and methods for predictive power management in a computing center
EP3274828B1 (en) * 2015-03-24 2020-05-06 Telefonaktiebolaget LM Ericsson (publ) Methods and nodes for scheduling data processing
US10235736B2 (en) * 2017-04-21 2019-03-19 Intel Corporation Intelligent graphics dispatching mechanism
US10325341B2 (en) 2017-04-21 2019-06-18 Intel Corporation Handling pipeline submissions across many compute units
CN107391866B (zh) * 2017-07-31 2022-03-04 北京仿真中心 一种基于多处理器的aadl模型的可调度性分析方法
CN108363671B (zh) * 2018-02-07 2020-01-14 中国平安人寿保险股份有限公司 一种接口切换的方法、终端设备及存储介质
US11676013B2 (en) * 2019-12-30 2023-06-13 International Business Machines Corporation Job-launch time reduction by node pre-configuration
CN112131008B (zh) * 2020-09-28 2024-04-19 芯瞳半导体技术(山东)有限公司 一种调度线程束warp的方法、处理器及计算机存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4245306A (en) * 1978-12-21 1981-01-13 Burroughs Corporation Selection of addressed processor in a multi-processor network
US4253144A (en) * 1978-12-21 1981-02-24 Burroughs Corporation Multi-processor communication network
US4253146A (en) * 1978-12-21 1981-02-24 Burroughs Corporation Module for coupling computer-processors
US4240143A (en) * 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
JPS58115569A (ja) 1981-12-29 1983-07-09 Fuji Electric Co Ltd マルチプロセツサ方式
US4924428A (en) * 1987-12-08 1990-05-08 Northern Telecom Limited Real time digital signal processor idle indicator
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
JPH01246657A (ja) 1988-03-29 1989-10-02 Toshiba Corp 並列処理システム
EP0403229A1 (en) * 1989-06-13 1990-12-19 Digital Equipment Corporation Method and apparatus for scheduling tasks in repeated iterations in a digital data processing system having multiple processors
JPH0660043A (ja) 1992-08-11 1994-03-04 Nec Corp 負荷分散制御方式
US5301324A (en) * 1992-11-19 1994-04-05 International Business Machines Corp. Method and apparatus for dynamic work reassignment among asymmetric, coupled processors
JP2684993B2 (ja) 1994-08-10 1997-12-03 日本電気株式会社 プロセッサシステムとその制御方法
JPH08292932A (ja) 1995-02-24 1996-11-05 Matsushita Electric Ind Co Ltd マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
US5907485A (en) * 1995-03-31 1999-05-25 Sun Microsystems, Inc. Method and apparatus for flow control in packet-switched computer system
US6728959B1 (en) * 1995-08-08 2004-04-27 Novell, Inc. Method and apparatus for strong affinity multiprocessor scheduling
JP2998648B2 (ja) 1995-08-28 2000-01-11 日本電気株式会社 負荷分散ジョブ処理システム
JPH09293057A (ja) 1996-04-26 1997-11-11 Nec Corp 階層構造型マルチプロセッサシステムにおけるタスク割り当て方法
JPH1027168A (ja) 1996-07-11 1998-01-27 Nec Corp メッセージ動的負荷分散方式
JP2954056B2 (ja) 1996-12-26 1999-09-27 日本電気ソフトウェア株式会社 マルチプロセッサのプロセスディスパッチ方法
JP3394437B2 (ja) 1998-01-27 2003-04-07 日本電気通信システム株式会社 負荷分散マルチプロセッサ方式によるプロセッサ決定方式
JPH11259318A (ja) 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式
US6292822B1 (en) * 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
JP3733402B2 (ja) 1998-12-16 2006-01-11 富士通株式会社 プロセッサ資源選択方法ならびにそのためのプロセッサ資源選択システムおよびコンピュ−タ読み取り可能なプログラム記録媒体
JP2000305906A (ja) 1999-04-20 2000-11-02 Hitachi Ltd 分散トランザクション制御装置
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
US6629075B1 (en) * 2000-06-09 2003-09-30 Speechworks International, Inc. Load-adjusted speech recogintion
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US6912533B1 (en) * 2001-07-31 2005-06-28 Oracle International Corporation Data mining agents for efficient hardware utilization

Also Published As

Publication number Publication date
JP2003241980A (ja) 2003-08-29
US20030149716A1 (en) 2003-08-07
JP4117202B2 (ja) 2008-07-16
US7487504B2 (en) 2009-02-03
TWI235952B (en) 2005-07-11

Similar Documents

Publication Publication Date Title
TWI235952B (en) Thread dispatch mechanism and method for multiprocessor computer systems
JP4056471B2 (ja) プロセッサに譲渡するためのシステム
US8271989B2 (en) Method and apparatus for virtual processor dispatching to a partition based on shared memory pages
US7197577B2 (en) Autonomic input/output scheduler selector
US7748005B2 (en) System and method for allocating a plurality of resources between a plurality of computing domains
US20150317179A1 (en) Efficient input/output-aware multi-processor virtual machine scheduling
US8020164B2 (en) System for determining and reporting benefits of borrowed computing resources in a partitioned environment
US7251814B2 (en) Yield on multithreaded processors
US7543306B2 (en) Method, system, and program for handling device interrupts in a multi-processor environment
US20080034366A1 (en) Virtual computer system with dynamic resource reallocation
WO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
JP2004220608A (ja) スレッド型に基づくコンピュータ・リソースの動的割り付け
JP2008015888A (ja) 負荷分散制御システム及び負荷分散制御方法
WO1993015457A1 (en) A parallel processing system for performing an application function
US20080229319A1 (en) Global Resource Allocation Control
JP2008186136A (ja) 計算機システム
US11556391B2 (en) CPU utilization for service level I/O scheduling
US7752623B1 (en) System and method for allocating resources by examining a system characteristic
US10409640B1 (en) Methods and apparatus for data request scheduling in performing parallel IO operations
WO2010089808A1 (ja) 仮想計算機の割当方法及び割当プログラム並びに仮想計算機環境を有する情報処理装置
US9088569B2 (en) Managing access to a shared resource using client access credentials
JP4211645B2 (ja) 専用プロセッサの備わった計算機システム
JPH0612395A (ja) マルチプロセサシステムにおけるタスク割り付け方法
JP2003084989A (ja) プライオリティ動的制御方式、プライオリティ動的制御方法およびプライオリティ動的制御用プログラム
JPH0668052A (ja) ジョブ自動割当機能を有する疎結合マルチプロセッサシステム

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees