TWI687868B - 電腦系統及其中斷事件處理方法 - Google Patents
電腦系統及其中斷事件處理方法 Download PDFInfo
- Publication number
- TWI687868B TWI687868B TW107104914A TW107104914A TWI687868B TW I687868 B TWI687868 B TW I687868B TW 107104914 A TW107104914 A TW 107104914A TW 107104914 A TW107104914 A TW 107104914A TW I687868 B TWI687868 B TW I687868B
- Authority
- TW
- Taiwan
- Prior art keywords
- event
- identification code
- memory
- interrupt
- system memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/24—Interrupt
- G06F2213/2424—Interrupt packet, e.g. event
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本發明提供一種電腦系統及其中斷事件處理方法。此電腦系統包括嵌入式控制器、系統記憶體及處理單元。嵌入式控制器具有內設記憶體並觸發中斷事件。處理單元耦接嵌入式控制器及系統記憶體,並接收對於中斷事件的通知。反應於此中斷事件,處理單元讀取內設記憶體中特定位址區段對應於中斷事件的事件識別碼或映射嵌入式控制器的內設記憶體中特定位址區段中對應於中斷事件的事件識別碼至系統記憶體。處理單元並通知對應此事件識別碼的硬體驅動程式。藉此,可有效提升中斷事件的處理效率。
Description
本發明是有關於一種電腦系統內通訊技術,且特別是有關於一種電腦系統及其中斷事件處理方法。
一般電腦系統可能連接或設有鍵盤、按鍵或開關等供使用者操作的周邊裝置,以對電腦系統進行控制。而這些周邊裝置之觸發行為,通常是由內嵌式控制器(Embedded Controller,EC)來通知作業系統(Operation System,OS)。舉例而言,請參照圖1的電腦系統1,假設使用者按壓用於開啟無線通訊功能之按鍵110,反應於按鍵110之按壓而使嵌入式控制器120偵測到對應硬體事件(步驟S101)。嵌入式控制器120將通知作業系統130系統控制中斷(System Control Interrupt,SCI)事件已被觸發(步驟S102),使作業系統130對嵌入式控制器120發出84h指令以詢問此系統控制中斷事件(步驟S103),以輸入/輸出(Input/ Output,I/O)存取方式而自嵌入式控制器120取得此系統控制中斷事件對應的事件識別碼(例如,0×xx)(步驟S104)。而反應於事件識別碼之取得,作業系統130才會執行韌體介面140所儲存的先進組態及電力介面來源語言(Advanced Configuration and Power Interface Source Language,ASL)碼所記錄例如是_Qxx()程式的內容(步驟S105),並據以通知無線通訊模組150的硬體驅動程式151(步驟S106),從而開啟或關閉無線通訊模組150。然而,透過下達指令來取得事件識別碼的IO存取方式通常需要花費以毫秒(ms)為單位的時間,當面臨到大量事件觸發的情況,恐將讓使用者感受到作業延遲的不佳體驗。
有鑑於此,本發明提供一種電腦系統及其中斷事件處理方法,以記憶體存取方式來取得事件識別碼,從而提升處理速度。
本發明的中斷事件處理方法,適用於電腦系統。此電腦系統具有嵌入式控制器(Embedded Controller,EC)。而中斷事件處理方法包括下列步驟。接收嵌入式控制器對於中斷事件的通知。反應於此中斷事件,讀取嵌入式控制器的內設記憶體中的特定位址區段中對應於中斷事件的事件識別碼或映射嵌入式控制器的內設記憶體中的特定位址區段中對應於中斷事件的事件識別碼至系統記憶體。通知對應事件識別碼的硬體驅動程式。
在本發明的一實施例中,上述映射嵌入式控制器的內設記憶體中特定位址區段中對應於中斷事件的該事件識別碼至系統記憶體包括下列步驟。將中斷事件對應的事件識別碼儲存於嵌入式控制器的內設記憶體中的特定位址區段。將內設記憶體中的特定位址區段中所記錄的資料映射到系統記憶體。移除內設記憶體中已映射至系統記憶體的資料。
在本發明的一實施例中,上述的內設記憶體中的特定位址區段中所記錄的資料更包括觸發的數個其他事件識別碼。
在本發明的一實施例中,上述反應於中斷事件,讀取嵌入式控制器的內設記憶體中特定位址區段中對應於中斷事件的事件識別碼或映射嵌入式控制器的內設記憶體中特定位址區段中對應於中斷事件的該事件識別碼至系統記憶體包括下列步驟。呼叫識別碼存取程序(program)執行該事件識別碼的存取作業,而此識別碼存取程序是先進組態及電力介面來源語言(Advanced Configuration and Power Interface Source Language,ASL)程序、電腦系統所運行作業系統(Operation System,OS)的介面程式、或記錄於電腦系統的韌體介面中與作業系統溝通的介面程式。
在本發明的一實施例中,上述將內設記憶體中的特定位址區段中所記錄的資料映射到系統記憶體包括下列步驟。將當次內設記憶體中的特定位址區段中所記錄的資料附加在系統記憶體中尚未被處理的資料之後。
在本發明的一實施例中,上述將內設記憶體中的特定位址區段中所記錄的資料映射到系統記憶體之前,更包括下列步驟。嵌入式控制器依據中斷事件的優先性賦予前導位元組。嵌入式控制器同時記錄中斷事件的前導位元組及事件識別碼於其內設記憶體。
在本發明的一實施例中,上述將內設記憶體中的特定位址區段中所記錄的資料映射到系統記憶體包括下列步驟。將事件識別碼與前導位元組排序在系統記憶體所記錄的其他相關於事件識別碼的資料之前。
在本發明的一實施例中,上述將事件識別碼與前導位元組排序在系統記憶體所記錄的其他相關於事件識別碼的資料之前,更包括下列步驟。若系統記憶體記錄另一前導位元組,則依據前導位元組及另一前導位元組的優先性排序對應二個事件識別碼。
在本發明的一實施例中,上述通知對應事件識別碼的硬體驅動程式包括下列步驟。依據系統記憶體中的事件識別碼順序通知對應硬體驅動程式。
在本發明的一實施例中,上述通知對應硬體驅動程式之後,更包括下列步驟。移除系統記憶體中已處理的事件識別碼,並反應於已處理的事件識別碼被移除或至少一個新事件識別碼自嵌入式控制器的內設記憶體映射至系統記憶體,重新排序系統記憶體中尚未被處理的資料。
另一方面,本發明的電腦系統包括嵌入式控制器、系統記憶體及處理單元。嵌入式控制器具有內設記憶體,並觸發中斷事件。處理單元耦接嵌入式控制器及系統記憶體,並接收嵌入式控制器對於此中斷事件的通知。反應於此中斷事件,處理單元讀取內設記憶體中特定位址區段中對應於中斷事件的事件識別碼或嵌入式控制器映射內設記憶體中特定位址區段中對應於中斷事件的事件識別碼至系統記憶體。處理單元並通知對應事件識別碼的硬體驅動程式。
在本發明的一實施例中,上述的嵌入式控制器將中斷事件對應的事件識別碼儲存於內設記憶體中特定位址區段,處理單元將內設記憶體中的特定位址區段中所記錄的資料映射到系統記憶體,嵌入式控制器並移除內設記憶體中已映射至系統記憶體的資料。
在本發明的一實施例中,上述的內設記憶體中的特定位址區段中所記錄的資料更包括觸發的數個其他事件識別碼。
在本發明的一實施例中,上述的處理單元呼叫識別碼存取程序執行事件識別碼的存取作業。而此識別碼存取程序是先進組態及電力介面來源語言程序、電腦系統所運行作業系統的介面程式、或記錄於韌體介面中與作業系統溝通的介面程式。
在本發明的一實施例中,上述嵌入式控制器將當次自內設記憶體中特定位址區段中所記錄的資料映附加在系統記憶體中尚未被處理單元處理的資料之後。
在本發明的一實施例中,上述的嵌入式控制器依據中斷事件的優先性賦予前導位元組,嵌入式控制器並同時記錄中斷事件的前導位元組及事件識別碼於內設記憶體。
在本發明的一實施例中,上述的處理單元將事件識別碼與前導位元組排序在系統記憶體所記錄的其他相關於事件識別碼的資料之前。
在本發明的一實施例中,若系統記憶體記錄另一前導位元組,則處理單元依據前導位元組及另一前導位元組的優先性排序對應二個事件識別碼。
在本發明的一實施例中,上述的電腦系統更包括相關於事件識別碼的功能硬體模組。此功能硬體模組耦接處理單元。處理單元依據系統記憶體中的事件識別碼的順序通知功能硬體模組的硬體驅動程式。
在本發明的一實施例中,上述的處理單元移除系統記憶體中已處理的事件識別碼,且反應於已處理的事件識別碼被移除或新事件識別碼自內設記憶體映射至系統記憶體,依據優先性重新排序系統記憶體中所記錄尚未被處理單元存取的資料。
基於上述,本發明實施例不再是透過發送84h指令來取得事件識別碼,而是讀取內嵌控制器的內設記憶體或系統記憶體中特定位址區塊所記錄的事件識別碼,從而節省處理時間。針對數個事件同時觸發,本發明實施例還能依據優先性來重新排序對應的事件識別碼,讓高優先性的事件能盡快處理。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖2是依據本發明一實施例的一種電腦系統2的元件方塊圖。此電腦系統2可以係桌上型電腦、筆記型電腦、工作站、伺服器等電子裝置。電腦系統2至少包括(但不僅限於)嵌入式控制器(EC)210、系統記憶體220、韌體介面230、儲存單元240、功能硬體模組250及處理單元260。
EC 210包括處理晶片、電路或微控制器、以及內設記憶體215(例如,任何型態的固定或可移動隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、快閃記憶體(Flash Memory)等)。EC 210可能連接有諸如鍵盤、按鍵、滑鼠、觸控板等周邊裝置。
系統記憶體220耦接EC 210,並可以是任何型態的固定或可移動RAM、快閃記憶體。韌體介面230耦接EC 210,並可以是基本輸入輸出系統(Basic Input Output System,BIOS)、可延伸韌體介面(Extensible Firmware Interface,EFI)或記載韌體程式的其他類型介面。
韌體介面230記錄有至少一先進組態及電力介面來源語言(ASL)程式,以對EC 210進行控制,而此程式之運作待後續實施例詳述。儲存單元240可以是任何型態的固定或可移動RAM、快閃記憶體、硬碟(HDD)、固態硬碟(SSD),並用以儲存作業系統(OS)245(例如,Windows、Linux、MAC OS、Chrome OS等)、各類型軟體模組(例如,各類型可執行檔、連結函式庫、與OS 245及/或EC 210溝通的介面程式、程式碼等)、檔案及資料。
功能硬體模組250可以係諸如Wi-Fi、藍芽等無線通訊模組、鍵盤背光模組、諸如LCD、LED顯示模組等各類型的硬體模組,並藉由對應硬體驅動程式255控制其運作。
處理單元260耦接EC 210、系統記憶體220、韌體介面230、儲存單元240及功能硬體模組250,並可以是CPU、微處理器、微控制器、數位信號處理(Digital Signal Processing,DSP)晶片、場可程式化邏輯閘陣列(Field Programmable Gate Array,FPGA)等可程式化單元。處理單元260的功能亦可用獨立電子裝置或積體電路(Integrated Circuit,IC)實施,甚至係以軟體方式實現。此外,儲存單元240所記錄的OS 245、韌體介面230所記錄的ASL程式、介面程式及其他軟體模組,可藉由相關處理資料及檔案儲存到系統記憶體220,使處理單元260讀取並處理以運行OS 245或其他程式或程序。
為了方便理解本發明實施例的操作流程,以下將舉諸多實施例詳細說明本發明實施例中電腦系統2之運作流程。圖3是依據本發明一實施例說明中斷事件處理方法之流程圖。請參照圖3,本實施例的方法適用於圖2中的電腦系統2。下文中,將先搭配電腦系統2的各項元件及模組說明本發明實施例所述之方法。本方法的各個流程可依照實施情形而隨之調整,且並不僅限於此。
EC 210反應於周邊裝置的觸發行為(例如,鍵盤按壓、按鈕按壓、開關切換等),而觸發對應中斷事件,使處理單元260接收EC 210對於中斷事件的通知(步驟S310)。
與圖1所示習知技術不同之處在於,本發明實施例的處理單元260會讀取EC 210的內設記憶體215中特定位址區段中對應於中斷事件的事件識別碼或處理單元260映射內設記憶體215中特定位址區段中對應於中斷事件的事件識別碼至系統記憶體220(步驟S320)。也就是說,本發明實施例係處理單元260對內設記憶體215或系統記憶體220中特定位址區段進行讀取,從而取得中斷事件對應的事件識別碼。相較於習知技術係OS透過84h指令發出要求且EC 210基於84h指令還要搜尋內設記憶體215中對應的資料,本發明實施例處理單元260直接讀取內設記憶體215的資料,可有效提升處理中斷事件的速度。需說明的是,於另一實施例中,EC 210可先預定義特定位址區段於內設記憶體215中,使此定義的特定位址區段可用於儲存中斷事件對應的事件識別碼。另值得注意的是,處理單元260對事件識別碼之讀取作業待後續實施例詳細說明。
而處理單元260取得內設記憶體215或系統記憶體220中中斷事件對應的事件識別碼後,即可通知對應事件識別碼的硬體驅動程式255(步驟S330),使硬體驅動程式255對應的功能硬體模組250執行對應作業(例如,啟動、關閉、切換功能等)。
為了幫助讀者更清楚理解本發明之精神,以下另舉實施例詳述。請參照圖4,當EC 210所連接的周邊裝置上接收到任何類型觸發行為(例如,按壓、點擊、滑動等)的硬體事件時(步驟S410),EC 210會偵測到此硬體事件而生成對應中斷事件(例如,系統控制中斷(System Control Interrupt,SCI))。而反應於此中斷事件,EC 210可將此中斷事件對應事件識別碼(例如,0×26、0×29、0×28等)儲存至其內設記憶體215中特定位址區段(例如,第一位址偏置或其他位址區段) (步驟S420)。
此外,於本實施例中,假設內設記憶體215中每個位址對應一個位元組的資料,且每個位址記錄有一個事件識別碼。EC 210會將數個事件識別碼依據時間或緩存順序依序排列於內設記憶體215中,並於其內設記憶體215記錄當前位元組計數(ByteCnt),以表示內設記憶體215所儲存的事件識別碼的總數。
舉例而言,表(2)中第2至6列依序是記錄不同事件識別碼於內設記憶體215的流程,不同索引代表不同記憶體位址偏置(offset)。EC 210依序發出SCI1、SCI2、SCI3、SCI4,並分別記錄對應事件識別碼於索引(index)1~4中。 表(2)
接著,EC 210會通知當前觸發的中斷事件給OS 245,使OS 245可接收到EC 210對於中斷事件的通知(步驟S430)。此外,反應於中斷事件之接收,OS 245會直接載入並呼叫識別碼存取程序。此識別碼存取程序可以是基於先進組態及電力介面來源語言(Advanced Configuration and Power Interface Source Language,ASL)程序(program)、OS 245的介面程式、或記錄於韌體介面230中與OS 245溝通的介面程式。具體而言,習知OS接收來自EC的一個SCI時,係透過發送一個84h指令來詢問此SCI對應事件識別碼,並在取得事件識別碼後才會呼叫ASL碼記錄的Q事件方法(即_Qxx()程式)。而為了提升處理速度,本實施例的OS 245將不再透過發送指令來讀取資料(可能會略過、暫時禁能或停用詢問指令(即,84h指令)之發送),並改以記憶體讀取方式來取得事件識別碼。也就是說,本實施例的識別碼存取程序記錄事件識別碼的存取方式,即讀取EC 210的內設記憶體215內特定位址區段(即,步驟S420所儲存的特定位址區段)中所記錄的事件識別碼。反應於OS 245的讀取操作,EC 210會將其內設記憶體215中位於特定位址區段(例如,表(2)中索引1)的事件識別碼傳送至OS 245。也就是說,處理單元260執行此識別碼存取程序時,即可自EC 210的內設記憶體215之特定位址區段中取得對應於中斷事件的事件識別碼(步驟S440)。
例如,識別碼存取程序係ASL程序,而處理單元260透過韌體介面230運行此ASL程序(步驟S441),使OS 245得以取得對應事件識別碼。需說明的是,因應於不同韌體介面系統、EC硬體或OS,識別碼存取程序可能會設計成不同介面程式,惟此介面程序須能與OS 245及EC 210溝通。
此外,依據不同需求,內設記憶體215還可能儲存有其他資料,因此於其他實施例中,識別碼存取程序可設計一個指標對應於當前觸發的事件識別碼,且此指標可移動位址而不一定固定指向某一位址區段。
而在取得事件識別碼之後,此識別碼存取程序更記錄有對應的通知流程(例如,以switch條件、if條件陳述式等)。即,不同事件識別碼會有對應的通知內容告知OS 245,使OS 245得知當前觸發事件為何。例如,反應於事件識別碼為0×29之取得,OS 245將被通知無線網路按鍵事件之觸發(例如,以Notify(\_SB.WLBU, 0×80)的語法)。接著,OS 245會通知對應硬體驅動程式255(步驟S450),以控制功能硬體模組。例如,開啟或關閉無線通訊功能。而若內設記憶體215中的事件識別碼不只一個,則處理單元260會依據內設記憶體215中的事件識別碼的順序通知對應的硬體驅動程式255。此外,EC 210可將已存取或處理的對應事件識別碼自內設記憶體215中移除,以提升儲存空間的使用率。
值得注意的是,事實上處理單元260直接存取系統記憶體220的效率通常會比存取內設記憶體215來的更好(速度較快、存取時間較短),且內設記憶體215受限於較小的儲存容量(大約是64、128或256位元組左右)。當面臨到許多中斷事件(例如,五、十、二十件以上)同時發生或間隔時間極小的情況下,處理單元260直接存取系統記憶體220將能展現更佳的效率。
而與前一實施例不同之處在於,在步驟S440中,識別碼存取程序還會將內設記憶體215中特定位址區段中所記錄的資料(即,步驟S430中對應於中斷事件的事件識別碼、或更包括觸發的一個或更多個其他事件識別碼)以相同排列順序映射到系統記憶體220中,使OS 245可自系統記憶體220取得事件識別碼。也就是說,本實施例的識別碼存取程序係記錄映射動作及讀取系統記憶體220中特定位址區段的內容。若系統記憶體220中尚有未被OS 245存取的資料,處理單元260會將當次內設記憶體215所記錄的資料附加在系統記憶體220中尚未被OS 245處理的資料之後。EC 210更會在資料映射至系統記憶體220之後,清除其內設記憶體215中已映射至系統記憶體220的資料(例如,重置內設記憶體215或移除事件識別碼相關內容等)。
舉例而言,表(3)中第2列表示映射前之內設記憶體215所記錄的資料,其中每格對應一個記憶體位址,且假設中斷事件SCI1~SCI4同時發生或發生時間點接近的情況。識別碼存取程序會將內設記憶體215中所記錄的這些事件識別碼以相同排序映射到系統記憶體220,如第4列所示。此外,內設記憶體215所記錄的事件識別碼經映射後將被移除,如第6列所示: 表(3)
基於表(3)的範例情境,假設接續有中斷事件SCI5~SCI9同時發生的情況下,表(4)中第2、4、6列分別表示映射前之內設記憶體215所記錄的資料、映射後之系統記憶體220所記錄的資料、及映射後之內設記憶體215所記錄的資料: 表(4)
由於中斷事件SCI1~SCI4尚未被處理,因此中斷事件SCI5~SCI9的事件識別碼將附加在中斷事件SCI1~SCI4之後。
值得注意的是,數起周邊裝置的觸發行為同時發生時,EC 210可能只會對OS 245通知一筆中斷事件,其餘行為將不會觸發中斷事件。由於本發明實施例能反應於一筆中斷事件之接收而映射多筆事件識別碼,因此未觸發中斷事件的其餘行為仍可完成對應驅動作業(即,驅動對應功能模組250)。反觀習知技術,一筆中斷事件通知僅會觸發一個84h指令來取得一個事件識別碼,故僅有一個周邊裝置的驅動作業可完成。
此外,由於系統記憶體220可能會記載多個事件識別碼,因此某一事件識別碼已受OS 245處理後將被移除。而識別碼存取程序會重新排序尚未處理的事件識別碼(即,平移這些事件識別碼)。此外,而若系統記憶體220中的事件識別碼不只一個,則處理單元260會依據系統記憶體220中的事件識別碼的順序通知對應的硬體驅動程式255。
另一方面,不同中斷事件對於OS 245而言可能有不同程度的優先性(或嚴重性、重要性、時效性),當前述眾多中斷事件同時發生或間隔時間極小的情況下,具有較高優先性的中斷事件應盡早處理(例如,開機按鍵被按壓等、溫度感測器偵測到系統過熱或回報電池電量不足等),且不會因先處理低優先性或無優先性的中斷事件而延誤處理緊急事件。而在另一實施例中,反應於硬體事件之發生,EC 210更依據此硬體事件所生成之中斷事件的優先性賦予前導(leading)位元組,並同時記錄中斷事件的前導位元組及事件識別碼於其自身內設記憶體215。
舉例而言,表(5)中第2、4列分別表示映射前之內設記憶體215所記錄的資料、及映射後之系統記憶體220所記錄的資料。假設中斷事件SCI1~SCI4同時發生的情況下,而中斷事件SCI2具有中高優先性,而在事件識別碼前附加前導位元組(0×81),其中,前導位元組代表優先性,於此實施例中,優先性最高至較低是以0×80、0×81、0×82…表示,然,於其他實施例中,亦可使用其他編碼或代表表示: 表(5)
基於表(5)的範例情境,假設接續有中斷事件SCI5~SCI9同時發生的情況下,表(6)中第2、4列分別表示映射前之內設記憶體215所記錄的資料、及映射後之系統記憶體220所記錄的資料,其中中斷事件SCI5、SCI7、SCI8具有不同優先性(分別以0×80、0×82、0×83表示): 表(6)
需說明的是,於其他實施例中,前導位元組亦可以是排列於對應事件識別碼之後。
接著,為了讓具有優先性的中斷事件盡早處理,請參照圖5,資料自內設記憶體215映射到系統記憶體220(步驟S510)之後,處理單元260會判斷系統記憶體220中記錄的位元組計數是否不等於零?(即,是否有事件識別碼待處理?)(步驟S520)。若位元組計數不等於零,則處理單元260將依據優先性而對系統記憶體220中所記錄的事件識別碼重新排序(步驟S525)。
針對優先性排序,處理單元260會將具有前導位元組的事件識別碼與前導位元組排序在系統記憶體220所記錄的其他事件識別碼的資料之前。而若系統記憶體220記錄不只一個前導位元組,則處理單元260還會依據不同前導位元組的優先性排序(例如,表(5)所使用之優先性(0x80~0x83)排序)對應的事件識別碼,使具有較高優先性的事件識別碼排序在前。
以表(7)為例說明,第1列係內設記憶體215的資料剛映射到系統記憶體220中且尚未開始排序的資料儲存情況,表中越靠左側越優先處理;由於系統記憶體220記錄有最高優先性(0x80),因此會將對應前導位元組0x80及其對應事件識別碼移到位元組計數旁,如第2列所示;次高優先性的前導位元組0x81及其對應事件識別碼再移到最高優先性的事件識別碼旁,如第3列所示;第三高優先性的前導位元組0x82及其對應事件識別碼再移到次高優先性的事件識別碼旁,如第4列所示;第四高優先性的前導位元組0x83及其對應事件識別碼再移到第三優先性的事件識別碼旁,如第5列所示,而剩餘無優先性的事件識別碼維持原排列順序。 表(7)
接著,處理單元260繼續執行識別碼存取程序並依據(排序最前方位址的)事件識別碼切換到對應的通知程序(步驟S530)。若當前處理的事件識別碼係0×29(步驟S540)則通知此事件識別碼對應的事件內容給OS 245 (步驟S541);若當前處理的事件識別碼係0×28(步驟S550)則通知此事件識別碼對應的事件內容給OS 245 (步驟S551),依此類推。OS 245被通知後,處理單元260接著會根據排序在系統記憶體220中的特定位址區段(例如,表(7)左邊第三欄的位址)的事件識別碼通知對應功能硬體模組250的硬體驅動程式255,並據以控制此功能硬體模組250。
若某一事件識別碼已被處理,則處理單元260會將系統記憶體220中已處理之事件識別碼連同其前導位元組(若有的話)重置為0×00或填入其他非用於指示SCI或優先性的代碼(步驟S542、S552)。
接著,處理單元260會確認EC 210之內設記憶體215中所記錄的位元組計數是否大於零或是OS 245確認是否有新的中斷事件觸發,以確認內設記憶體215中是否儲存有待映射的資料(步驟S560)?若尚有待映射資料,則返回步驟S510進行映射作業;若未有待映射資料,則回到步驟S520確認系統記憶體220是否有待處理的事件識別碼,並在步驟S525中重新排序系統記憶體220中的資料。
需說明的是,為了讓具有優先性的事件識別碼能盡量排序在前,當內設記憶體215有至少一個新事件識別碼映射到系統記憶體220,處理單元260便需要將系統記憶體220中的資料再依據優先性重新排序,並將已處理之事件識別碼先前儲存的位址(例如,表(8)左邊第二欄與第三欄)補上其他事件識別碼或前導位元組,且系統記憶體220中記錄的位元組計數需對應調整(步驟S525)。需說明的是,在步驟S525中,處理單元260還將前述已重置的資料(即,已處理之事件識別碼)移除,使尚未處理的事件識別碼得以記錄於相同位址,且新觸發中斷事件對應的事件識別碼映射進系統記憶體220後才不會因重排與移除作業同時進行而造成資料混亂。
此外,在一些實施例中,處理單元260會在優先性排序結束後先移除系統記憶體220中所記錄的所有前導位元組,而移除前導位元組的記憶體位址則由排列於後方的其他事件識別碼依序平移補上,而OS 245僅需要存取排序最前方位址的資料即可。舉例而言,表(9)係基於表(7)重新排序後的內容而移除前導位元組的儲存情況: 表(9)
然而,考量後續具有優先性的新事件識別碼映射後仍可優先處理,較佳實施例係保留前導位元組,使新事件識別碼可經重新排序而優先處理。
綜上所述,針對中斷事件的詢問方式,本發明實施例不再使用IO讀取方式來查詢對應事件識別碼,而改由記憶體存取方式來提升處理效率。此外,不僅可自EC的記憶體取得事件識別碼,亦可將EC的記憶體的資料映射到系統記憶體,使OS對系統記憶體存取,將進一步提升處理速度,進而能應用大量中斷事件發生的情境。再且,對事件識別碼賦予優先性,將提供更加合適的排程處理。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
1、2‧‧‧電腦系統110‧‧‧按鍵120、210‧‧‧嵌入式控制器130、245‧‧‧作業系統140、230‧‧‧韌體介面150‧‧‧無線通訊模組151‧‧‧硬體驅動程式215‧‧‧內設記憶體220‧‧‧系統記憶體240‧‧‧儲存單元250‧‧‧功能硬體模組260‧‧‧處理單元S101~S106、S310~S330、S410~S450、S510~S560‧‧‧步驟
圖1是習知的電腦系統處理中斷事件的流程圖。 圖2是依據本發明一實施例的一種電腦系統的元件方塊圖。 圖3是依據本發明一實施例的中斷事件處理方法的流程圖。 圖4是依據本發明一實施例的中斷事件處理方法的流程圖。 圖5是依據本發明一實施例的事件識別碼的處理流程圖。
S310~S330‧‧‧步驟
Claims (20)
- 一種中斷事件處理方法,適用於一電腦系統的一處理單元執行,其中該電腦系統具有一嵌入式控制器(Embedded Controller,EC),該中斷事件處理方法包括:接收該嵌入式控制器對於一中斷事件的通知;以及反應於該中斷事件,讀取該嵌入式控制器的內設記憶體中的特定位址區段中對應於該中斷事件的事件識別碼或映射該嵌入式控制器的內設記憶體中的特定位址區段中對應於該中斷事件的該事件識別碼至一系統記憶體;以及通知對應該事件識別碼的硬體驅動程式。
- 如申請專利範圍第1項所述的中斷事件處理方法,其中映射該嵌入式控制器的內設記憶體中特定位址區段中對應於該中斷事件的該事件識別碼至該系統記憶體的步驟,包括:將該中斷事件對應的該事件識別碼儲存於該嵌入式控制器的內設記憶體中的該特定位址區段;將該內設記憶體中的該特定位址區段中所記錄的資料映射到該系統記憶體;以及移除該內設記憶體中已映射至該系統記憶體的資料。
- 如申請專利範圍第2項所述的中斷事件處理方法,其中該內設記憶體中的該特定位址區段中所記錄的資料更包括觸發的多個其他事件識別碼。
- 如申請專利範圍第1項所述的中斷事件處理方法,其中反應於該中斷事件,讀取該嵌入式控制器的內設記憶體中特定位址區段中對應於該中斷事件的事件識別碼或映射該嵌入式控制器的內設記憶體中特定位址區段中對應於該中斷事件的該事件識別碼至該系統記憶體的步驟,包括:呼叫一識別碼存取程序(program)執行該事件識別碼的存取作業,其中該識別碼存取程序是先進組態及電力介面來源語言(Advanced Configuration and Power Interface Source Language,ASL)程序、該電腦系統所運行作業系統(Operation System,OS)的介面程式、或記錄於該電腦系統的韌體介面中與該作業系統溝通的介面程式。
- 如申請專利範圍第2項所述的中斷事件處理方法,其中將該內設記憶體中的該特定位址區段中所記錄的資料映射到該系統記憶體的步驟,包括:將該內設記憶體中的該特定位址區段中所記錄的資料附加在該系統記憶體中尚未被處理的資料之後。
- 如申請專利範圍第2項所述的中斷事件處理方法,其中將該內設記憶體中的該特定位址區段中所記錄的資料映射到該系統記憶體之前,更包括:該嵌入式控制器依據該中斷事件的優先性賦予一前導位元組;以及該嵌入式控制器記錄該中斷事件的前導位元組及事件識別碼 於該內設記憶體。
- 如申請專利範圍第6項所述的中斷事件處理方法,其中將該內設記憶體中的該特定位址區段中所記錄的資料映射到該系統記憶體的步驟包括:將該事件識別碼與該前導位元組排序在該系統記憶體所記錄的其他相關於該事件識別碼的資料之前。
- 如申請專利範圍第7項所述的中斷事件處理方法,其中將該事件識別碼與該前導位元組排序在該系統記憶體所記錄的其他相關於該事件識別碼的資料之前,包括:若該系統記憶體記錄另一前導位元組,則依據該前導位元組及該另一前導位元組的優先性排序對應二該事件識別碼。
- 如申請專利範圍第1項所述的中斷事件處理方法,其中通知對應該事件識別碼的硬體驅動程式的步驟,包括:依據該系統記憶體中的該事件識別碼的順序通知對應的硬體驅動程式。
- 如申請專利範圍第9項所述的中斷事件處理方法,其中通知對應的硬體驅動程式之後,更包括:移除該系統記憶體中已處理的事件識別碼,並反應於已處理的該事件識別碼被移除或至少一新事件識別碼自該嵌入式控制器的內設記憶體映射至該系統記憶體,重新排序該系統記憶體中尚未被處理的資料。
- 一種電腦系統,包括: 一嵌入式控制器,具有一內設記憶體,並觸發一中斷事件;一系統記憶體;一處理單元,耦接該嵌入式控制器及該系統記憶體,接收該嵌入式控制器對於該中斷事件的通知,且反應於該中斷事件,讀取該內設記憶體中特定位址區段中對應於該中斷事件的事件識別碼或映射該內設記憶體中特定位址區段中對應於該中斷事件的事件識別碼至該系統記憶體,該處理單元並通知對應該事件識別碼的硬體驅動程式。
- 如申請專利範圍第11項所述的電腦系統,其中該嵌入式控制器將該中斷事件對應的該事件識別碼儲存於該內設記憶體中特定位址區段,而該處理單元將該內設記憶體中的該特定位址區段中所記錄的資料映射到該系統記憶體,該嵌入式控制器並移除該內設記憶體中已映射至該系統記憶體的資料。
- 如申請專利範圍第12項所述的電腦系統,其中該內設記憶體中的該特定位址區段中所記錄的資料更包括觸發的多個其他事件識別碼。
- 如申請專利範圍第11項所述的電腦系統,其中該處理單元呼叫一識別碼存取程序執行該事件識別碼的存取作業,其中該識別碼存取程序是先進組態及電力介面來源語言程序、該電腦系統所運行作業系統的介面程式、或記錄於韌體介面中與該作業系統溝通的介面程式。
- 如申請專利範圍第12項所述的電腦系統,其中該處理單元將該內設記憶體中的特定位址區段中所記錄的資料附加在該系統記憶體中尚未被該處理單元處理的資料之後。
- 如申請專利範圍第12項所述的電腦系統,其中該嵌入式控制器依據該中斷事件的優先性賦予一前導位元組,該嵌入式控制器記錄該中斷事件的前導位元組及對應的該事件識別碼於該內設記憶體。
- 如申請專利範圍第16項所述的電腦系統,其中該處理單元將該事件識別碼與該前導位元組排序在該系統記憶體所記錄的其他相關於該事件識別碼的資料之前。
- 如申請專利範圍第16項所述的電腦系統,其中若該系統記憶體記錄另一前導位元組,則該處理單元依據該前導位元組及該另一前導位元組的優先性排序對應二該事件識別碼。
- 如申請專利範圍第11項所述的電腦系統,更包括:相關於該事件識別碼的一功能硬體模組,耦接該處理單元,其中該處理單元依據該系統記憶體中的該事件識別碼的順序通知該功能硬體模組的硬體驅動程式。
- 如申請專利範圍第18項所述的電腦系統,其中該處理單元移除該系統記憶體中已處理的事件識別碼,且反應於已處理的該事件識別碼被移除或至少一新事件識別碼自該內設記憶體映射至該系統記憶體,重新排序該系統記憶體中所記錄尚未被該處理單元存取的資料。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107104914A TWI687868B (zh) | 2018-02-12 | 2018-02-12 | 電腦系統及其中斷事件處理方法 |
CN201810235515.8A CN110147337B (zh) | 2018-02-12 | 2018-03-21 | 电脑系统及其中断事件处理方法 |
US15/980,755 US10635612B2 (en) | 2018-02-12 | 2018-05-16 | Computer system and interrupt event handing method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107104914A TWI687868B (zh) | 2018-02-12 | 2018-02-12 | 電腦系統及其中斷事件處理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201935236A TW201935236A (zh) | 2019-09-01 |
TWI687868B true TWI687868B (zh) | 2020-03-11 |
Family
ID=67541674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107104914A TWI687868B (zh) | 2018-02-12 | 2018-02-12 | 電腦系統及其中斷事件處理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10635612B2 (zh) |
CN (1) | CN110147337B (zh) |
TW (1) | TWI687868B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI811606B (zh) * | 2020-12-31 | 2023-08-11 | 新唐科技股份有限公司 | 事件觸發主控端、控制晶片及控制方法 |
TWI817747B (zh) * | 2022-09-29 | 2023-10-01 | 旺宏電子股份有限公司 | 記憶體裝置及其管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131169A1 (en) * | 2001-12-21 | 2003-07-10 | Barnes Cooper | Invoking ACPI source language code from interrupt handler |
US20050138256A1 (en) * | 2003-12-23 | 2005-06-23 | Bolay Frederick H. | Method and apparatus for processing hot key input using operating system visible interrupt handling |
CN1925926B (zh) * | 2004-03-24 | 2012-03-28 | 英特尔公司 | 包含协作嵌入式代理的装置及有关系统和方法 |
US9792437B2 (en) * | 2014-04-22 | 2017-10-17 | Dell Products, Lp | System and method for securing embedded controller communications by providing a security handshake |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937200A (en) * | 1997-11-21 | 1999-08-10 | Phoenix Technologies Ltd. | Using firmware to enhance the functionality of a controller |
US20030063071A1 (en) * | 2001-09-28 | 2003-04-03 | Wyatt David A. | Method and apparatus for signaling user initiated hot-key switch control |
US20050198421A1 (en) * | 2004-03-08 | 2005-09-08 | Nalawadi Rajeev K. | Method to execute ACPI ASL code after trapping on an I/O or memory access |
US20080098146A1 (en) * | 2006-10-20 | 2008-04-24 | Jang-Ying Lee | Interrupt hooking method for a computing apparatus |
CN103257943B (zh) * | 2006-11-27 | 2016-09-14 | 英特尔公司 | 集中式中断控制器 |
GB2450516A (en) * | 2007-06-27 | 2008-12-31 | Symbian Software Ltd | Servicing interrupts in a device having multiple interrupt controllers |
CN105095128B (zh) * | 2014-05-22 | 2020-04-03 | 中兴通讯股份有限公司 | 中断处理方法及中断控制器 |
US9507740B2 (en) * | 2014-06-10 | 2016-11-29 | Oracle International Corporation | Aggregation of interrupts using event queues |
CN104111870B (zh) * | 2014-07-08 | 2017-05-24 | 福建星网锐捷网络有限公司 | 一种中断处理装置及中断处理方法 |
US9697154B2 (en) * | 2014-08-20 | 2017-07-04 | Red Hat Israel, Ltd. | Managing message signaled interrupts in virtualized computer systems |
US9921984B2 (en) * | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
US10585826B2 (en) * | 2016-01-25 | 2020-03-10 | Advanced Micro Devices, Inc. | Using processor types for processing interrupts in a computing device |
CN105760314A (zh) | 2016-03-14 | 2016-07-13 | 山东超越数控电子有限公司 | 一种利用ec sci控制系统开机屏幕亮度的方法 |
-
2018
- 2018-02-12 TW TW107104914A patent/TWI687868B/zh active
- 2018-03-21 CN CN201810235515.8A patent/CN110147337B/zh active Active
- 2018-05-16 US US15/980,755 patent/US10635612B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131169A1 (en) * | 2001-12-21 | 2003-07-10 | Barnes Cooper | Invoking ACPI source language code from interrupt handler |
US20050138256A1 (en) * | 2003-12-23 | 2005-06-23 | Bolay Frederick H. | Method and apparatus for processing hot key input using operating system visible interrupt handling |
CN1925926B (zh) * | 2004-03-24 | 2012-03-28 | 英特尔公司 | 包含协作嵌入式代理的装置及有关系统和方法 |
US9792437B2 (en) * | 2014-04-22 | 2017-10-17 | Dell Products, Lp | System and method for securing embedded controller communications by providing a security handshake |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI811606B (zh) * | 2020-12-31 | 2023-08-11 | 新唐科技股份有限公司 | 事件觸發主控端、控制晶片及控制方法 |
TWI817747B (zh) * | 2022-09-29 | 2023-10-01 | 旺宏電子股份有限公司 | 記憶體裝置及其管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US10635612B2 (en) | 2020-04-28 |
TW201935236A (zh) | 2019-09-01 |
CN110147337A (zh) | 2019-08-20 |
CN110147337B (zh) | 2021-03-02 |
US20190251047A1 (en) | 2019-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020000719A1 (zh) | 报表系统的数据处理方法、装置及计算机可读存储介质 | |
US10884817B2 (en) | Method and apparatus for parallel execution in terminal database using data partitions | |
US9268495B2 (en) | Managing I/O priorities | |
EP3425491B1 (en) | Data processing method and apparatus | |
TWI687868B (zh) | 電腦系統及其中斷事件處理方法 | |
US11360705B2 (en) | Method and device for queuing and executing operation commands on a hard disk | |
WO2021072880A1 (zh) | 虚拟机内部快照异步创建方法、装置、系统及存储介质 | |
EP0556295A1 (en) | Protected hot key function for microprocessor-based computer system | |
CN101878474A (zh) | 具有智能文件放置和/或重新布置的存储卷跨越 | |
KR20080098432A (ko) | 2―레벨 인터럽트 서비스 루틴 | |
US10719351B2 (en) | Method for controlling states of processes and related device | |
JP2021089704A (ja) | データ照会方法、装置、電子機器、可読記憶媒体、及びコンピュータープログラム | |
CN115525631A (zh) | 数据库数据迁移方法、装置、设备、存储介质 | |
US7752353B2 (en) | Signaling an interrupt request through daisy chained devices | |
CN111782368A (zh) | 中断嵌套处理方法、装置、终端及存储介质 | |
WO2022042127A1 (zh) | 一种协程切换的方法、装置及设备 | |
EP4302200A1 (en) | Measuring and improving index quality in a distributed data system | |
CN1851652A (zh) | 嵌入式sram操作系统进程优先级轮转调度的实现方法 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN110767264A (zh) | 一种数据处理方法、装置和计算机可读存储介质 | |
CN1825288A (zh) | 嵌入式sram操作系统进程多队列调度的实现方法 | |
JP2014232382A (ja) | 制御装置、制御方法及び制御プログラム | |
JP2002215398A (ja) | 情報処理装置、その使用方法及びプログラム | |
WO2021102677A1 (zh) | 触摸响应方法及触摸屏系统、终端、存储介质、芯片 | |
CN1851654A (zh) | 嵌入式sram操作系统进程等时间片轮转调度的实现方法 |