陣列比較和交換操作的製作方法
2023-08-11 14:56:16
專利名稱:陣列比較和交換操作的製作方法
陣列比較和交換操作
背景技術:
軟體事務存儲器(STM)系統是本領域中眾所周知的系統。 一般 來說,這些系統提供對於並行編程和其它應用有用的原語以便允許程 序指定一組動作作為事務,因為事務內的動作是自動執行的。通常, 原語包括開始事務、正常終止事務、以及異常中止事務並回滾(roll back)所中止的事務的所有效果的命令或調用。已存在多種已知的 STM系統的實現。STM系統在軟體中實現,因此可以與基於硬體的 事務存儲器(HTM)系統有所區分。
用於並行程序的有用原語有原子多字比較和交換(MCAS)。該 原語自動執行。它將存儲器的一組存儲單元中的值與所提供的一組對 應值進行比較。如果所提供的每個值與存儲器中的對應值匹配,則 MCAS原語將所提供的一組新值存儲到這組存儲單元中,並返回指示 成功的完成代碼;否則,不對存儲器做任何改變,並且MCAS返回指 示失敗的完成代^馬。i者如Fraser的Practical Lock Freedom (見Keir Fraser的博士論文Practical Lock Freedom)的現有的MCAS實現利用 指針值以及對更新的日誌記錄或緩衝(在MCAS操作期間)來確保原 子性。該緩沖或日誌記錄會使這些MCAS增加開銷。
圖l描繪一個實施例中的基於處理器的系統。 圖2描繪一個實施例中的處理流程。
具體實施例方式
參照圖l,如圖所示的基於處理器的系統可以包括耦合到總線110 的一個或多個處理器105。或者,該系統可以具有一個為多核處理器的處理器,或在其它情況下,可以具有多個多核處理器。在一些實施 例中,處理器可以超線程化,或者能夠以多核處理器的方式執行(盡
管只有單個核)。在一個簡單的實例中,總線110可以耦合到系統存 儲器115、諸如磁碟驅動器或其它存儲設備的存儲設備120、外圍設 備145。存儲設備120可以存儲各種軟體或數據。該系統可以經由一 個或多個總線系統連接到各種外圍設備145。眾所周知,這些外圍設 備可以包括顯示器和列印系統等。
圖1中的系統只是一個實例,本發明不限於任何特定的體系結構。 具有其它體系結構的系統中的特定組件可以包括以下變化在一些情 況下,增加事務存儲器作為系統的一個或多個處理器的組件;而在其 它情況下,增加的事務存儲器可以是總線上連接到處理器的獨立組 件。在其它實施例中,系統可以具有用於管理無鎖定事務的額外指令。 在其它實施例中,指令的實際形式或格式可以有所不同。可以存在額 外的存儲器或存儲組件。還可以有大量的其它變化。
在一個實施例中,可以利用為支持通用軟體事務存儲器(STM) 實現而提供的功能性來提供MCAS操作,這種MCAS操作作為系統 (例如,如圖1中描繪的系統)的軟體的一部分。具體來說,MCAS 操作可以利用由STM保持的讀取器-寫入器鎖定來實現事務所需的基 本的並行性控制。
下面將從高層次描述在該實施例中使用的STM系統的一個實例 的一些特徵。該STM實現保持讀取器-寫入器鎖定陣列(an array of reader-writer lock)。讀取器-寫入器鎖定是這樣一種鎖定它允許多個 讀取器獲得對該鎖定的訪問權,然後讀取存儲單元;但只允許單個寫 入器獲得對該鎖定的訪問權,然後寫入到該存儲單元。STM所用的每 個存儲單元(memory location)映射到唯一的讀取器-寫入器鎖定。STM 保持的唯一讀取器-寫入器鎖定的數量取決於映射函數。在一個實例
中,實現可以利用屏蔽一個地址的4交低位(如6個位)的散列函數作 為映射函數來獲得對應於該地址處的存儲單元的高速緩存行地址。然後,可以利用該高速緩存行地址作為對讀取器-寫入器鎖定陣列的索 引。
因此,例如,如果處理器正在執行的程序試圖利用STM的服務 來從地址處的存儲單元進行事務讀取,則STM系統首先計算該存 儲單元的地址的散列。然後,STM系統計算對應於該散列的讀取器-寫入器鎖定L。接著,系統試圖獲得L上的讀取鎖定。如果STM系 統成功,則STM系統返回位置A處的值並將STM系統已經獲得L 上的讀取鎖定的指示存儲到本地事務讀集合中。類似地,如果程序試 圖利用STM的服務來進行到地址爿處的存儲單元的事務寫入,則STM 如同之前一樣計算讀取器-寫入器鎖定丄,然後嘗試獲得L上的獨佔寫 入鎖定。如果STM系統成功,則STM系統更新存儲單元爿並在日誌 中保留j的舊值的副本,以防必須回滾該事務。此外,STM系統也將 STM系統已經獲得L上的寫入鎖定的指示存儲到本地事務寫集合中。
如果在該實現中通過STM系統的事務實現未能獲得讀取器或寫 入器鎖定,則STM系統在放棄一段時間之後重新嘗試,這段時間可 以是隨機確定的時間周期。允許重新嘗試固定次數,在這之後,STM 系統中止事務並解除所有鎖定。在一些實施例中,可以使用計數器來 跟蹤重新嘗試的次數。也可以基於STM系統為該事務保持的日誌來 將在該事務開始之後經過修改的任何存儲單元返回到它們的原始值。 這種中止機制用於防止死鎖。
如果事務成功地獲得所有必需的鎖定並完成處理,則STM系統 解除所有鎖定,並丟棄所有記入日誌的值。這標誌著在該STM系統 中成功提交了事務。
如前所述,MCAS原語為程序提供了這樣一種原子方法,該方法 用於測試存儲器中的一組值是否與作為參數提供給MCAS函數的一 組預定值匹配,並且如果比4交得到肯定的結果,即,所述一組預定值 與所述存儲器中的一組值相同,則用作為參數傳入的一組替換值換出 所述存儲器中的一組值。在一個實施例中,MCAS原語可以通過一種同樣提供STM的系統利用用於實現該STM系統的基本機制來實現。 在下文中,在一個實施例中,假定具有讀取器-寫入器鎖定的STM系 統(例如,上文描述的STM系統)支持(underlie)MCAS實現。該實 施例的一個特徵在於,MCAS實現利用與STM機制所用的讀取器-寫 入器鎖定相同的讀取器-寫入器。
該實施例中的實現具有幾個特徵。首先,該實施例包括MCAS的 一般化實現,因為該實施例涉及的實現可以擴展到任意大小的一組單 元。其次,該實施例的MCAS實現不存在與現有MCAS實現關聯的、 由於在執行的中間階段進行日誌記錄或緩沖而引起的過度開銷。最 後,該MCAS實現與基本的STM不千擾地共存,這是因為利用了為 STM提供並行控制和同步的相同的鎖定機制來實現MCAS,因此, STM事務與MCAS操作之間不太可能出現幹擾。
圖2中的流程圖從高層次描繪該實施例中的利用STM機制的 MCAS實現。該圖描繪了一種MCAS原語的實現,該MCAS原語可 視為具有可以表示成以下函數調用的接口
Bool MCAS ( int k, void* addr [], uint32 oldValue[], uint32 newValue[]);
用類似C的語法表示的該調用提供了函數MCAS,該函數MCAS 取以下項作為參數整數k;提供將用於MCAS操作的一組k個存儲 地址的引用或指針參數addr;以及兩個值參數,即,用於比較的整數 數組oldValue和用於交換到存儲器陣列中的整數數組newValue,這 兩個數組的大小都為k。當該函數執行時,效果如下如果通過addr 中的地址而指定的一組存儲單元中的值與數組參數oldValue中的對應 值匹配,則函數將數組newValue中的新值存儲在通過addr中的地址 而指定的這組存儲單元中,並返回邏輯值真;否則,函數令存儲單元 保持不變,並返回假。
為了實現MCAS的功能性,如圖2所示的基本操作從215開始, 首先,在220,計算在MCAS中涉及的k個單元中的每個單元的讀取器-寫入器鎖定地址。接著,在225,該實現嘗試獲得所有fc個讀取器 -寫入器鎖定上的寫入鎖定。在一些實施例中,如果在第一次嘗試時沒 有獲得鎖定,則該實現可以進行固定次數的重新嘗試以獲得鎖定,並 且可以使用計數器來跟蹤嘗試次數。如果獲得所有鎖定235,則該實 現檢查陣列中的所有A:個單元是否都具有預期值(即,在參數oWKa/we 中提供的值)。如杲即使在重新嘗試(如果有)之後仍沒有獲得所有 鎖定(路徑235-240),或者如果並非陣列中的所有單元都具有預期 值(路徑230-240),則在240,解除所獲得的所有鎖定並且函數返回 魚值,並在255終止。但是,如果獲得了所有鎖定並且這A個單元都 具有預期值,則在245,存儲"ewFb/i^數組中的新值,並在貫穿流程 的該路徑中,在250解除所有鎖定,函數返回l值,並在255終止。
在該實施例中,還可參照之前描述的讀取器-寫入器鎖定的機制來 進一步說明圖2中的220處的動作,具體來說,即計算MCAS中涉及 的單元的讀取器-寫入器鎖定。在嘗試獲得鎖定時,該MCAS實現執 行與基本STM系統相同的動作。具體來說,正如STM —樣,該MCAS 調用的實現通過以下方法來計算讀取器-寫入器鎖定陣列中的鎖定的 索引從通過指定的A個存儲單元中的每個存儲單元的地址開始, 首先屏蔽每個存儲單元的地址的最低6個位以便獲得該單元的高速緩 存行地址;然後,該MCAS實現利用該高速緩存行地址作為對讀取器 -寫入器鎖定陣列的索引。
上文描述的實現的一個特徵在於,該實施例不需要在245寫入新 值之前對通過指定的存儲單元中的值作日誌記錄或進行檢查點 操作。這是因為,當MCAS實現到達245時,有幾個斷言可以視為是 真的。首先,因為是按值傳遞參數oldValue和newValue的,所以對 於那些參數而言不可能出現地址異常。因為所有比較都完成了,所以 該階段不可能出現算術異常。此外,因為已經使用了通過addr而指定 的k個元素的地址集合中的所有地址來計算高速緩存行地址並且因此 引用鎖定,所以對陣列中的地址的訪問不可能產生存儲器異常,這是因為鎖定陣列計算也已經有效地驗證了陣列中的所有地址。因此,可 以假設,新值在存儲器中陣列中的存儲可以無誤地完成,因此可以避 免在該階段對舊值作日誌記錄或進行檢查點操作,從而潛在地減少延 遲開銷。
儘管以上描述是關於上述實施例的,但也可以有許多變化。首先,
如上文那樣,通常按如下方式描述MCAS函數通過將存儲器中的一 組值與傳遞給該函數的一組預定值的等同性進行比較,並且只有當這 組存儲單元中的每個值等於作為參數傳遞的對應值時才交換傳遞到 該函數中的值。但是,在其它實施例中,可以使用類似MCAS的函數, 這些函數利用等同性之外的比較。許多此類比較和結果在本領域中已 知。例如,技術人員可以容易地設想這樣一個操作,在該操作中,存 儲器中的這組值與參數數組之間的比較是"小於"或"大於"的比較, 並且只有在存儲器中的值"小於"或"大於"對應參數值時才會發生 交換。這種MCAS類函數可以通過與圖2中所示的MCAS的處理類 似的處理來容易地實現。類似地,還可以有其它比較和隨比較結果而 定的其它動作。
此外,存儲在陣列中的值可以是任意的數據類型,而不限於固定 大小的數據。例如,陣列中的每個元素可以是文本串、圖形圖像、或 其它多部分數據類型,對此定義了一些數據相關的比較判定。因此, 例如,可以容易地設想用於換出文本串陣列的MCAS類操作。 為通用起見,下文將上述所有改變稱為是MCAS類。 此外,儘管參照與STM共享的基本機制描述了以上MCAS和 MCAS類操作的實現,但是即使在缺少STM的情況下,參照圖2描 述的處理仍是可能的。如果滿足MCAS操作的要求的讀取器-寫入器 鎖定陣列可用,則儘管系統中缺少STM,但仍可實現以上處理。此外, 在一些情況下,基於硬體的事務存儲器系統可以釆用與在上述實施例 的描述中由STM實現提供的方式類似的方式來提供實現MCAS所需 的鎖定機制。本領域的技術人員將容易地理解,實際上,基於存儲地址的讀取
器-寫入器鎖定引用的實際計算可以通過無限種方法來完成,其中許多 方法與參照上文提到的實施例描述的高速緩存行計算無關。例如,可
以使用任意的散列函數和散列表來計算鎖定地址並存儲存儲單元的鎖定。
最後,本領域的技術人員應明白,MCAS函數的代表性接口和圖 2中描繪的處理只是在一個實例性實施例中的接口和處理。眾所周知, 在表述MCAS的接口時可以有許多語法和命名的變化,此外,可以用 無限種方法來改變處理流程,而不會影響軟體函數的實現的基本輸入 -輸出功能性。因此,上文論述的MCAS和其它MCAS類原語的實現 可以有許多備選方案。
在以上描述中,出於說明的目的,闡述了眾多具體細節以便充分 理解所描述的實施例,但是,本領域的技術人員將明白,在沒有這些 具體細節的情況下,也可以實現許多其它實施例。
以上的部分詳細描述介紹了基於處理器的系統內對數據位的操 作的算法和符號表示。這些算法描述和表示是本領域的技術人員用來 向本領域的其它人員最有效地傳達他們的工作實質的方式。操作是指 那些需要物理量的物理操縱的操作。這些量可以採用電、磁、光、或 能夠被存儲、傳送、組合、比較及以其它方式操縱的其它物理信號的 形式。已證實很多時候將這些信號稱為位、值、元素、符號、字符、 項、數字等很方便,這主要是出於慣用的原因。
但是,應記住,所有這些和類似術語將與合適的物理量關聯,它 們僅僅是適用於這些量的方便的標記。除非另外特外說明,否則從本 描述顯而易見,諸如"執行"、"處理"、"計算"、"演算"或"確 定"等術語可以指操縱在基於處理器的系統的存儲設備內表示成物理 量的數據並將該數據變換為類似表示的其它數據的基於處理器的系 統或類似的電子計算裝置、或其它此類信息存儲、傳輸或顯示設備的 動作和過程。在對實施例的描述中,可以參照附圖。附圖中,這幾個視圖中相 同的數字描述基本上類似的組件。可以利用其它實施例,並且可以做 出結構、邏輯和電改變。此外,應了解,儘管各個實施例有所不同, 但它們不一定相互排斥。例如,在一個實施例中描述的特定特徵、結 構、或特性可以包含在其它實施例中。
此外,在處理器中實現的實施例的設計可以經歷從創建到才莫擬到 製作各個不同階段。代表設計的數據可以用多種方式來表示這個設 計。首先,可以使用硬體描述語言或另一種功能描述語言來表示硬體, 這在才莫擬中有用。另外,可以在設計過程中的某些階段產生具有邏輯 和/或電晶體門的電路級模型。此外,在某個階段,大部分設計達到表 示硬體模型中的各種設備的物理替換的數據級。在使用常規半導體制 造技術的情況下,代表硬體才莫型的數據可以是指定在用來製造集成電 路的掩模的不同掩模層上各種特徵存在與否的數據。在設計的任意表 示中,數據可以存儲在任意形式的機器可讀介質中。經調製或以其它 方式生成而用來傳送該信息的光波或電波、存儲器、或諸如盤的磁或 光存儲設備都可以作為機器可讀介質。所有這些介質都可以"攜帶" 或"指示"該設計或軟體信息。當指示或攜帶代碼或設計的電載波得 以傳送時,在執行電信號的複製、緩沖或重新傳送的意義上,進行新 的複製。因此,通信提供者或網絡提供者可以複製物品(例如,載波), 這些複本構成或表示一個實施例。
實施例可以作為程序產品來提供,該程序產品可以包括其上存儲 有數據的機器可讀介質,當該數據被機器訪問時可使機器執行權利要 求保護主題所述的方法。機器可讀介質可以包括但不限於軟盤、光碟、
DVD-ROM盤、DVD-RAM盤、DVD-RW盤、DVD+RW盤、CD-R 盤、CD-RW盤、CD-ROM盤、及^茲-光碟、ROM、 RAM、 EPROM、 EEPROM、磁或光卡、閃速存儲器、或其它類型的適於存儲電子指令 的介質/機器可讀^h質。此外,實施例也可以作為程序產品下載,其中 可以經由通信鏈路(如數據機或網絡連接)通過在栽波或其它傳播介質中實施的數據信號將程序從遠程數據源傳送給請求的設備。
雖然許多方法是以它們的最基本的形式進行描述的,但是在不偏 離所要求保護的主題的基本範圍的情況下,可以在其中任何一個方法 中增減步驟,並且可以在所描述的任何消息中增減信息。本領域的技 術人員將明白,可以做出許多其它修改和改變。提供特定實施例不是 為了限制所要求保護的主題,而是為了說明它。所要求保護的主題的 範圍不是由上文提供的具體實例確定的,而只由隨附權利要求確定。
權利要求
1. 一種方法,包括嘗試為軟體事務存儲器(STM)系統的一組存儲單元中的每個存儲單元獲得通過所述STM的實現而提供的寫入鎖定;如果為所述一組存儲單元中的每個存儲單元獲得了寫入鎖定,則將所述一組存儲單元中的每個存儲單元中的值與對應的預期值進行比較;以及如果對於所述一組存儲單元中的每個存儲單元,所述比較產生相同的預定結果,則將對應的新值存儲在每個存儲單元中。
2. 如權利要求l所述的方法,其中所述比4交還包括檢查所述一組存儲單元中的每個存儲單元中的 值是否等於所述對應的預期值;以及 所述比較的預定結果為真。
3. 如權利要求1所述的方法,其中嘗試為所述一組存儲單元中的 每個存儲單元獲得寫入鎖定還包括如果沒有為所述一組存儲單元中的每個存儲單元獲得寫入鎖定, 則遞增失敗嘗試次數的計數器;如果在等待一段時間之後所述計數器不大於預定值,則重複為所 述一組存儲單元中的每個存儲單元獲得寫入鎖定所做的所述嘗試;以 及如果所迷計數器大於所述預定值,則中止為獲得所述寫入鎖定所 做的所述嘗試。
4. 如權利要求1所述的方法,還包括如果對於所述一組存儲單元中的每個存儲單元,所述比較未能獲 得相同的預定結果,則解除所獲得的寫入鎖定。
5. 如權利要求1所述的方法,其中嘗試為所述一組存儲單元中的 每個存儲單元獲得寫入鎖定還包括至少部分地基於相應存儲單元的地址來計算對所述一組存儲單元中的每個存儲單元的唯一讀取器-寫 入器鎖定的引用。
6. 如權利要求5所述的方法,其中計算所述引用還包括至少部 分地基於相應存儲單元的地址來計算散列值;至少部分地利用所述散 列值來獲得對應於所述存儲單元的高速緩存行地址;以及至少部分地 利用所述高速緩存行地址來計算對讀取器-寫入器鎖定陣列的索引。
7. 如權利要求1所述的方法,其中將對應的新值存儲在每個存儲 單元中還包括存儲所述新值而不在日誌和/或緩衝器中保存和/或記 錄存儲在所述存儲單元中的先前值。
8. 如權利要求7所述的方法,其中嘗試為所述一組存儲單元中的 每個存儲單元獲得所述STM系統的寫入鎖定還包括至少部分地基於所述一組存儲單元中的每個存儲單元的地址來 計算散列值;至少部分地利用所述散列值來獲得對應於所述一組存儲單元中 的每個存儲單元的高速《爰存行地址;以及至少部分地利用所述高速緩存行地址來計算對所述STM的讀取 器-寫入器鎖定陣列的索引。
9. 一種其上存儲有數據的有形機器可讀介質,所迷數據在被機器 訪問時使所述機器執行一種方法,所述方法包括嘗試為軟體事務存儲器(STM)系統的一組存儲單元中的每個存 儲單元獲得通過所述STM的實現而提供的寫入鎖定;如果為所述一組存儲單元中的每個存儲單元獲得了寫入鎖定,則 將所述一組存儲單元中的每個存儲單元中的值與對應的預期值進行 比l交;以及如果對於所述一組存儲單元中的每個存儲單元,所述比較產生相 同的預定結果,則將對應的新值存儲在每個存儲單元中。
10. 如權利要求9所迷的機器可讀介質,其中所述比4交還包括檢查所述一組存儲單元中的每個存儲單元中的值是否等於所述對應的預期值;以及 所述比較的預定結果為真。
11. 如權利要求9所述的機器可讀介質,其中嘗試為所述一組存 儲單元中的每個存儲單元獲得寫入鎖定還包括如果沒有為所述一組存儲單元中的每個存儲單元獲得寫入鎖定, 則遞增失敗嘗試次數的計數器;如果在等待一段時間之後所述計數器不大於預定值,則重複為所 述一組存儲單元中的每個存儲單元獲得寫入鎖定所做的所述嘗試;以 及如果所述計數器大於所述預定值,則中止為獲得所述寫入鎖定所 做的所迷嘗試。
12. 如權利要求9所述的機器可讀介質,其中所述方法還包括 如果對於所述一組存儲單元中的每個存儲單元,所述比較未能獲得相同的預定結果,則解除所獲得的寫入鎖定。
13. 如權利要求9所述的機器可讀介質,其中嘗試為所述一組存儲單元中的每個存儲單元獲得寫入鎖定還包括至少部分地基於相應存儲單元的地址來計算對所述一組存儲單元中的每個存儲單元的唯 一讀取器-寫入器鎖定的引用。
14. 如權利要求13所述的機器可讀介質,其中計算所述引用還包 括至少部分地基於相應存儲單元的地址來計算散列值;至少部分地 利用所迷散列值來獲得對應於所述存儲單元的高速緩存行地址;以及 至少部分地利用所述高速緩存行地址來計算對讀取器-寫入器鎖定陣 列的索引。
15. 如權利要求9所述的機器可讀介質,其中將對應的新值存儲 在每個存儲單元中還包括存儲所述新值而不在日誌和/或緩沖器中保 存和/或記錄存儲在所述存儲單元中的先前值。
16. 如權利要求15所述的機器可讀介質,其中嘗試為所述一組存 儲單元中的每個存儲單元獲得所述STM系統的寫入鎖定還包括至少部分地基於所述一組存儲單元中的每個存儲單元的地址來計算散列值;至少部分地利用所述散列值來獲得對應於所述一組存儲單元中 的每個存儲單元的高速緩存行地址;以及至少部分地利用所述高速糹爰存行地址來計算對所述STM的讀取 器-寫入器鎖定陣列的索引。
17. —種系統,包括 處理器;以通信方式耦合到所迷處理器的存儲器; 可在所述存儲器中加載的軟體事務存儲器(STM)系統; 可在所述存儲器中加載的多字比較和交換(MCAS)模塊,所述 MCAS用於嘗試為所述STM的一組存儲單元中的每個存儲單元獲得通過所 述STM系統的實現而提供的寫入鎖定;如果為所述一組存儲單元中的每個存儲單元獲得了寫入鎖定,則 將所述一組存儲單元中的每個存儲單元中的值與對應的預期值進行 比車交;以及如果對於所述一組存儲單元中的每個存儲單元,所述比較產生相 同的預定結果,則將對應的新值存儲在每個存儲單元中。
18. 如權利要求17所述的系統,其中所述比較還包括檢查所述一組存儲單元中的每個存儲單元中的 值是否等於所述對應的預期值;以及 所述比較的預定結果為真。
19. 如權利要求17所述的系統,其中嘗試為所述一組存儲單元中 的每個存儲單元獲得寫入鎖定還包括如果沒有為所述一組存儲單元中的每個存儲單元獲得寫入鎖定, 則遞增失敗嘗試次數的計數器;如果在等待一段時間之後所述計數器不大於預定值,則重複為所述一組存儲單元中的每個存儲單元獲得寫入鎖定所做的所述嘗試;以 及如果所述計數器大於所述預定值,則中止為獲得所述寫入鎖定所 做的所述嘗試。
20.如權利要求17所述的系統,其中所述存儲器還包括DRAM。
全文摘要
嘗試為軟體事務存儲器(STM)系統的一組存儲單元中的每個存儲單元獲得通過所述STM的實現而提供的寫入鎖定;如果為所述一組存儲單元中的每個存儲單元獲得了寫入鎖定,則將所述一組存儲單元中的每個存儲單元中的值與對應的預期值進行比較;以及如果對於所述一組存儲單元中的每個存儲單元,所述比較產生相同的預定結果,則將對應的新值存儲在每個存儲單元中。
文檔編號G06F13/00GK101416168SQ200780012449
公開日2009年4月22日 申請日期2007年3月30日 優先權日2006年3月31日
發明者A·-R·阿德爾-塔巴塔拜, B·薩哈 申請人:英特爾公司