国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于優(yōu)化的管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法和系統(tǒng)的制作方法

      文檔序號(hào):6503490閱讀:416來(lái)源:國(guó)知局
      用于優(yōu)化的管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法和系統(tǒng)的制作方法
      【專利摘要】提供了用于遵守MPI語(yǔ)義的單個(gè)芯片上的小節(jié)點(diǎn)的點(diǎn)到點(diǎn)管芯內(nèi)消息傳遞支持。在一方面,使用了遵守用于在單個(gè)芯片中集成的小節(jié)點(diǎn)間的網(wǎng)絡(luò)通信的標(biāo)準(zhǔn)通信協(xié)議的本地緩沖機(jī)制。從一個(gè)小節(jié)點(diǎn)發(fā)送消息到相同芯片上的另一個(gè)小節(jié)點(diǎn)可不通過(guò)網(wǎng)絡(luò)執(zhí)行,而是通過(guò)在小節(jié)點(diǎn)之間的點(diǎn)到點(diǎn)消息桶中交換消息來(lái)執(zhí)行。消息桶不需要是小節(jié)點(diǎn)的存儲(chǔ)系統(tǒng)的一部分??墒褂脤iT(mén)的硬件控制器來(lái)在小節(jié)點(diǎn)和每個(gè)消息桶之間移動(dòng)數(shù)據(jù),并確保網(wǎng)絡(luò)協(xié)議的正確運(yùn)行。
      【專利說(shuō)明】用于優(yōu)化的管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法和系統(tǒng)
      【技術(shù)領(lǐng)域】
      [0001]本申請(qǐng)一般涉及計(jì)算機(jī)以及計(jì)算機(jī)應(yīng)用,具體地涉及計(jì)算機(jī)架構(gòu),且更具體地涉及半導(dǎo)體芯片或管芯(die)中的消息傳遞。
      【背景技術(shù)】
      [0002]利用在芯片上集成的數(shù)量越來(lái)越多的組件來(lái)創(chuàng)建電子電路芯片(或集成半導(dǎo)體電路)。制造單個(gè)芯片以保持多個(gè)小節(jié)點(diǎn)(nodelet)的集成。而且,單芯片上的每個(gè)小節(jié)點(diǎn)可具有若干個(gè)處理器。小節(jié)點(diǎn)中的處理器可以是同構(gòu)的(即,是相同的類型),或是異構(gòu)的(即,是不同的類型)。每個(gè)小節(jié)點(diǎn)具有其自己的存儲(chǔ)系統(tǒng),但是小節(jié)點(diǎn)之間的存儲(chǔ)器不被共享。即,每個(gè)小節(jié)點(diǎn)具有單獨(dú)的存儲(chǔ)一致性域。
      [0003]在多節(jié)點(diǎn)系統(tǒng)中,節(jié)點(diǎn)通過(guò)使用一個(gè)或多個(gè)網(wǎng)絡(luò)協(xié)議來(lái)互相通信。對(duì)于許多應(yīng)用來(lái)說(shuō),相鄰節(jié)點(diǎn)間的通信量高于遠(yuǎn)程節(jié)點(diǎn)。類似地,相鄰節(jié)點(diǎn)間的通信比更遠(yuǎn)節(jié)點(diǎn)間的通信更頻繁。將邏輯上“近的”節(jié)點(diǎn)映射到物理上相鄰的節(jié)點(diǎn)減少了延遲和功耗。通過(guò)將邏輯上近的節(jié)點(diǎn)映射到相同芯片上的節(jié)點(diǎn),通信的主要部分留在該芯片上。小節(jié)點(diǎn)使用網(wǎng)絡(luò)協(xié)議(典型地使用消息傳遞接口(MPI)協(xié)議)通過(guò)網(wǎng)絡(luò)連接來(lái)參與到更大的多節(jié)點(diǎn)系統(tǒng)。
      [0004]但是網(wǎng)絡(luò)通信仍然涉及開(kāi)銷,諸如為了網(wǎng)絡(luò)協(xié)議任務(wù)、傳輸包以及接收包而需要實(shí)現(xiàn)的工作。
      [0005]消息傳遞接口(MPI)是用于高性能計(jì)算(HPC)的編程范式(paradigm)。該模型很流行,主要是因?yàn)槠淇梢浦残院涂鏗PC平臺(tái)的支持。因?yàn)镸PI程序以可移植方式被編寫(xiě),程序員優(yōu)化與應(yīng)用有關(guān)的方面,諸如計(jì)算和通信,但典型地不針對(duì)執(zhí)行環(huán)境優(yōu)化。特別地,MPI任務(wù)通常以線性次序被映射到處理器。
      [0006]A.Aggarwal, A.K.Chandra, and M.Snir.0n communication latency in PRAMcomputation.1n Proceedings of the ACM Symposium on Parallel Algorithms and Architectures,pagesll-21,Junel989,以及 A.Alexandrov, M.F.1onescu,K.E.Schauser,and
      C.Scheiman.LogGP:1ncorporating long messages into the LogP model for parallelcomputation.Journal of Parallel and Distributed Computing,44(I):71-79,1997石開(kāi)究了確定應(yīng)用的通信模式.[0007]與這樣的通信模式研究無(wú)關(guān),另一個(gè)現(xiàn)有技術(shù)類別提供了一種指導(dǎo)MPI程序員的模型。但是,早期模型明確地忽視硬件特點(diǎn)以簡(jiǎn)化模型。更近一些的模型(參見(jiàn)
      D.Culler, R.Karp, D.Patterson, A.Sahay, K.E.Schauser, E.Santos, R.Subramonian,andT.von Eicken.LogP:Towards a realistic model parallel computation.1n Proceedingsof the ACM SIGPLAN Symposium on Principles and Practices of ParallelProgramming, Mayl993 以 及 M.1.Frank, A.Agarwal, and M.K.Vernon.LoPCiModelingcontention in parallel algorithms.1n Proceedings of the ACM SIGPLAN Symposiumon Principles and Practices of Parallel Programming,pages276_287,Junel997)試圖開(kāi)發(fā)用于一般網(wǎng)絡(luò)的理論模型。但是,這樣的建模沒(méi)有利用經(jīng)驗(yàn)數(shù)據(jù)來(lái)改善模型精確度。利用現(xiàn)有技術(shù),很難獲得性能益處。

      【發(fā)明內(nèi)容】

      [0008]可提供一種用于管芯內(nèi)小節(jié)點(diǎn)間的消息通信的方法和系統(tǒng)。在一個(gè)方面,該方法可包括分配桶(bucket),該桶包含存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義的硬件控制邏輯,用于在第一存儲(chǔ)域(domain)上的第一進(jìn)程和第二存儲(chǔ)域上的第二進(jìn)程之間傳送數(shù)據(jù),其中第一存儲(chǔ)域和第二存儲(chǔ)域不被共享,且其中該桶不是第一存儲(chǔ)域或第二存儲(chǔ)域的一部分。該方法還可包括將桶映射到第一進(jìn)程。該方法還可包括由第一進(jìn)程將消息數(shù)據(jù)寫(xiě)到桶并調(diào)用發(fā)送消息傳遞接口函數(shù),該發(fā)送消息傳遞接口函數(shù)發(fā)出給第二進(jìn)程的硬件信號(hào)。該方法還可包括響應(yīng)于第二進(jìn)程調(diào)用接收消息傳遞接口函數(shù),將緩沖區(qū)映射到第二進(jìn)程,其中該第二進(jìn)程被使能以讀取被映射的桶中的數(shù)據(jù)。
      [0009]在一個(gè)方面,一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的系統(tǒng)可包括單個(gè)芯片上的多個(gè)小節(jié)點(diǎn),每個(gè)小節(jié)點(diǎn)具有不與該單個(gè)芯片上的其余小節(jié)點(diǎn)共享的、其自己的存儲(chǔ)一致性(coherence)域,每個(gè)小節(jié)點(diǎn)包括一個(gè)或多個(gè)進(jìn)程核(process core),其中該多個(gè)小節(jié)點(diǎn)至少包括具有第一進(jìn)程核和第一存儲(chǔ)一致性域的第一小節(jié)點(diǎn),以及具有第二進(jìn)程核和第二存儲(chǔ)一致性域的第二小節(jié)點(diǎn)。該系統(tǒng)還可包括桶,該桶包括存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義的硬件控制邏輯,用于在多個(gè)小節(jié)點(diǎn)之間傳送數(shù)據(jù),其中該桶不是小節(jié)點(diǎn)的存儲(chǔ)一致性域的一部分。第一進(jìn)程核被使能以將桶映射到第一進(jìn)程核,將消息數(shù)據(jù)寫(xiě)入到桶,以及調(diào)用發(fā)送消息傳遞接口函數(shù),該發(fā)送消息傳遞接口函數(shù)發(fā)出硬件信號(hào)給第二進(jìn)程核。響應(yīng)于第二進(jìn)程核調(diào)用接收消息傳遞接口函數(shù),緩沖區(qū)被映射到第二進(jìn)程核以使能第二進(jìn)程核讀取數(shù)據(jù)。
      [0010]在另一方面,一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法可包括保留桶,該桶包括存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義的硬件控制邏輯,用于在第一存儲(chǔ)域上的第一進(jìn)程和第二存儲(chǔ)域上的第二進(jìn)程之間傳送數(shù)據(jù),其中第一存儲(chǔ)域和第二存儲(chǔ)域不被共享,且其中該桶不是第一存儲(chǔ)域或第二存儲(chǔ)域的一部分。該方法還包括設(shè)置多個(gè)控制位以指示僅用于第一進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn)。該方法還可包括接收由第一進(jìn)程調(diào)用的發(fā)送調(diào)用。該方法還可包括設(shè)置控制位以指示用于第一進(jìn)程的共享讀寫(xiě)訪問(wèn),并發(fā)出硬件信號(hào)給第二進(jìn)程。該方法還可包括接收由第二進(jìn)程調(diào)用的接收調(diào)用。該方法還可包括設(shè)置控制位以指示用于第二進(jìn)程的共享讀寫(xiě)訪問(wèn)。該方法還可包括,響應(yīng)于從第一進(jìn)程接收到取消映射調(diào)用,設(shè)置控制位以指示用于第二進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn)。該方法還可包括,響應(yīng)于從第二進(jìn)程接收到取消映射調(diào)用,設(shè)置控制位以指示用于第一進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn)。
      [0011]還可提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)可由機(jī)器執(zhí)行的指令程序以執(zhí)行在此描述的一個(gè)或多個(gè)方法。
      [0012]以下參考附圖詳細(xì)描述進(jìn)一步的特點(diǎn)以及各種實(shí)施例的結(jié)構(gòu)和操作。在附圖中,類似的參考標(biāo)號(hào)指示相同或功能上類似的元件。
      【專利附圖】

      【附圖說(shuō)明】
      [0013]圖1示出本公開(kāi)的一個(gè)實(shí)施例中的多小節(jié)點(diǎn)芯片的組件。
      [0014]圖2示出本公開(kāi)的一個(gè)實(shí)施例中的小節(jié)點(diǎn)間的消息通信機(jī)制。[0015]圖3是示出本公開(kāi)的一個(gè)實(shí)施例中的小節(jié)點(diǎn)到小節(jié)點(diǎn)的通信的流程圖。
      [0016]圖4示出了本公開(kāi)一個(gè)實(shí)施例中在消息傳輸期間可如何針對(duì)來(lái)自發(fā)送者和接收者進(jìn)程的讀和寫(xiě)來(lái)控制桶。
      [0017]圖5示出了本公開(kāi)的一個(gè)實(shí)施例中的消息桶的例子。該例子示出了用于點(diǎn)到點(diǎn)消息傳遞的兩個(gè)小節(jié)點(diǎn)的桶實(shí)現(xiàn)。
      [0018]圖6示出了本公開(kāi)的一個(gè)實(shí)施例中的緩沖區(qū)復(fù)制。
      [0019]圖7示出了本公開(kāi)的一個(gè)實(shí)施例中的管芯上的多個(gè)小節(jié)點(diǎn)。
      [0020]圖8示出了本公開(kāi)的一個(gè)實(shí)施例中的進(jìn)程修改緩沖區(qū)時(shí)的場(chǎng)景。
      [0021]圖9示出了消息桶的一個(gè)例子,其中多個(gè)小節(jié)點(diǎn)的桶實(shí)現(xiàn)被提供,以用于將消息傳送到多個(gè)小節(jié)點(diǎn)。
      【具體實(shí)施方式】
      [0022]在復(fù)雜的多節(jié)點(diǎn)系統(tǒng)內(nèi)運(yùn)行科學(xué)和高性能應(yīng)用時(shí)的大部分網(wǎng)絡(luò)流量是在相對(duì)本地的節(jié)點(diǎn)之間,僅有小部分流量到系統(tǒng)中相對(duì)較遠(yuǎn)的節(jié)點(diǎn)。因此,在本地節(jié)點(diǎn)間具有快速和高效的通信方式是有益的。
      [0023]本公開(kāi)描述了不同存儲(chǔ)域之間的通信機(jī)制。在一個(gè)方面,為遵守MPI語(yǔ)義的單個(gè)芯片上的小節(jié)點(diǎn)提供了低開(kāi)銷、低延遲的點(diǎn)到點(diǎn)小節(jié)點(diǎn)內(nèi)消息傳遞支持。在一個(gè)方面,使用了本地緩沖機(jī)制,該機(jī)制遵守用于在單個(gè)芯片上集成的小節(jié)點(diǎn)間的網(wǎng)絡(luò)通信的標(biāo)準(zhǔn)通信協(xié)議。在本公開(kāi)的方法的一個(gè)實(shí)施例中,從一個(gè)小節(jié)點(diǎn)發(fā)送消息到相同芯片上的另一個(gè)小節(jié)點(diǎn)不是通過(guò)網(wǎng)絡(luò)執(zhí)行的,而是通過(guò)交換小節(jié)點(diǎn)間的點(diǎn)到點(diǎn)消息桶中的消息執(zhí)行的。消息桶不是小節(jié)點(diǎn)的存儲(chǔ)系統(tǒng)的一部分。專用的硬件控制器被用于在小節(jié)點(diǎn)和每個(gè)消息桶之間移動(dòng)數(shù)據(jù)。
      [0024]圖1示出了本公開(kāi)的一個(gè)實(shí)施例中的多小節(jié)點(diǎn)芯片的組件。多個(gè)小節(jié)點(diǎn)(例如104、106)可被集成到芯片102中。每個(gè)小節(jié)點(diǎn)(例如104、106)可具有一個(gè)或多個(gè)同構(gòu)的或異構(gòu)的處理器內(nèi)核。每個(gè)小節(jié)點(diǎn)(例如104、106)也具有其單獨(dú)的存儲(chǔ)系統(tǒng)。小節(jié)點(diǎn)(例如104、105)之間的存儲(chǔ)器不被共享。使用網(wǎng)絡(luò)連接114和MPI協(xié)議,小節(jié)點(diǎn)(例如104、106)參與更大的多節(jié)點(diǎn)系統(tǒng)。從小節(jié)點(diǎn)內(nèi)的進(jìn)程到位于不同芯片上的其他進(jìn)程的消息經(jīng)由網(wǎng)絡(luò)接口和網(wǎng)絡(luò)來(lái)發(fā)送。從小節(jié)點(diǎn)內(nèi)的進(jìn)程到位于相同芯片上的不同小節(jié)點(diǎn)中的其他進(jìn)程的消息不是經(jīng)由網(wǎng)絡(luò)、而是通過(guò)在小節(jié)點(diǎn)間的點(diǎn)到點(diǎn)消息桶(例如108、110、112)中交換消息來(lái)執(zhí)行的。在一個(gè)實(shí)施例中,點(diǎn)到點(diǎn)消息桶(例如108、110、112)被用來(lái)在相同芯片102上的小節(jié)點(diǎn)(例如104、106)間傳輸MPI數(shù)據(jù)。桶(例如108、110、112)包括存儲(chǔ)空間和遵守諸如MPI的消息協(xié)議的硬件控制邏輯,并可被芯片上的所有小節(jié)點(diǎn)使用以將消息從一個(gè)小節(jié)點(diǎn)轉(zhuǎn)移到相同芯片上的另一個(gè)小節(jié)點(diǎn)。在一個(gè)實(shí)施例中,消息桶(例如108、110、112)不是芯片上的任何小節(jié)點(diǎn)的存儲(chǔ)系統(tǒng)的一部分。在一個(gè)實(shí)施例中,每個(gè)小節(jié)點(diǎn)(例如104、106)中的硬件控制器被用來(lái)訪問(wèn)消息桶(例如108、110、112)。消息桶(例如108、110、112)在一個(gè)實(shí)施例中支持MPI網(wǎng)絡(luò)協(xié)議。消息桶含有存儲(chǔ)器和控制邏輯,其用于從一個(gè)小節(jié)點(diǎn)接收消息、向另一個(gè)小節(jié)點(diǎn)通知關(guān)于消息等待、以及確保對(duì)桶中的特定存儲(chǔ)器的獨(dú)占訪問(wèn)(如由用于兩個(gè)節(jié)點(diǎn)間的消息傳輸?shù)腗PI協(xié)議所定義的)。關(guān)于這點(diǎn)如何實(shí)現(xiàn)的細(xì)節(jié)將從以下描述中變得明顯。[0025]圖2是示出本公開(kāi)的一個(gè)實(shí)施例中的小節(jié)點(diǎn)間的消息通信機(jī)制的圖。芯片202的小節(jié)點(diǎn)204上的進(jìn)程0216 (例如核)可將短MPI點(diǎn)到點(diǎn)消息發(fā)送到相同芯片202上的小節(jié)點(diǎn)上的進(jìn)程1218 (例如核),例如如下所示。在相同芯片上的小節(jié)點(diǎn)之間發(fā)送消息是通過(guò)使用消息桶來(lái)執(zhí)行的。在將消息從進(jìn)程0215發(fā)送到進(jìn)程1218之前,為該傳輸來(lái)識(shí)別可用的桶,且識(shí)別的桶被保留以在消息傳輸期間用于該消息的獨(dú)占使用。該保留是由操作系統(tǒng)(OS)對(duì)應(yīng)用透明地執(zhí)行的。進(jìn)程0216例如經(jīng)由諸如my_addr=bucket_alloc的函數(shù)或?qū)嵱贸绦蛘{(diào)用來(lái)發(fā)起該功能。該函數(shù)bucket_alloc識(shí)別可用的桶。這類似于對(duì)malloc的調(diào)用,并使得來(lái)自桶的存儲(chǔ)區(qū)正常地出現(xiàn)在調(diào)用進(jìn)程的地址空間208中。在一個(gè)實(shí)施例中,桶的大小可在函數(shù)中作為參數(shù)被指定。在另一個(gè)實(shí)施例中,桶中的緩沖區(qū)的大小可以是預(yù)定的。在又一個(gè)實(shí)施例中,不同的桶指定了不同的緩沖區(qū)大小?,F(xiàn)在,新的存儲(chǔ)區(qū)域作為進(jìn)程0的地址空間的一部分出現(xiàn),且該進(jìn)程可通過(guò)對(duì)該存儲(chǔ)區(qū)進(jìn)行尋址來(lái)寫(xiě)到該存儲(chǔ)區(qū)。例如,進(jìn)程0可執(zhí)行合適的計(jì)算,并將數(shù)據(jù)寫(xiě)到分配的地址。這將桶0208映射到進(jìn)程0216,且進(jìn)程0可執(zhí)行MPI_Send.[0026]當(dāng)進(jìn)程0準(zhǔn)備好將消息從桶0發(fā)送到進(jìn)程I時(shí),它調(diào)用MPI_Send函數(shù)。桶0中的專門(mén)的控制硬件通知進(jìn)程I存在消息以供其接收,且其位置是桶O。這觸發(fā)了進(jìn)程I發(fā)出MPI_Recv調(diào)用,其將會(huì)有效地將桶0映射到進(jìn)程I的存儲(chǔ)空間。在進(jìn)程0216和進(jìn)程1218分別調(diào)用MPI_Send和MPI_Recv后,桶0208被映射到進(jìn)程216和218兩者。以此,桶0屬于兩個(gè)進(jìn)程的存儲(chǔ)空間,且兩個(gè)進(jìn)程對(duì)其具有完整的讀寫(xiě)訪問(wèn)。但是,在本公開(kāi)的一個(gè)實(shí)施例中,為了遵守MPI語(yǔ)法(或其他網(wǎng)絡(luò)協(xié)議語(yǔ)法),一旦被發(fā)送,消息不再能被生成該消息的進(jìn)程修改。類似地,在本公開(kāi)的一個(gè)實(shí)施例中,如果消息仍然在進(jìn)程0的存儲(chǔ)區(qū)域中,它不能被任何其他進(jìn)程(包括進(jìn)程I)修改。因此,當(dāng)任一進(jìn)程寫(xiě)該桶0208時(shí),觸發(fā)“寫(xiě)時(shí)復(fù)制”協(xié)議,其中生成桶的新副本。映射被調(diào)整,以使得桶現(xiàn)在指向正確的所有者。
      [0027]圖3是示出本公開(kāi)的一個(gè)實(shí)施例中的小節(jié)點(diǎn)到小節(jié)點(diǎn)通信的流程圖。小節(jié)點(diǎn)(例如被稱為小節(jié)點(diǎn)0或第一小節(jié)點(diǎn))上的進(jìn)程或核(例如被稱為進(jìn)程0或第一進(jìn)程)可將消息(例如短MPI點(diǎn)到點(diǎn)消息)發(fā)送到另一個(gè)小節(jié)點(diǎn)(例如被稱為小節(jié)點(diǎn)I或第二小節(jié)點(diǎn))上的另一個(gè)進(jìn)程或核(例如被稱為進(jìn)程I或第二進(jìn)程)。在302,桶被創(chuàng)建并被映射到進(jìn)程O(píng)。可提供函數(shù)調(diào)用,以創(chuàng)建桶并將進(jìn)程映射到該桶。例如,send_addr=Bucket_alloc(size, -1)(進(jìn)程0)可創(chuàng)建桶,并映射到被稱為進(jìn)程0的進(jìn)程。在桶被映射后,進(jìn)程0可將消息數(shù)據(jù)以和它訪問(wèn)任何其他存儲(chǔ)器相同的方式寫(xiě)到桶。一旦準(zhǔn)備好發(fā)送消息,在304,進(jìn)程0通過(guò)調(diào)用在本公開(kāi)中提供的發(fā)送函數(shù)來(lái)發(fā)送消息。發(fā)送函數(shù)指定了若干參數(shù),包括諸如創(chuàng)建的桶的地址、進(jìn)程0的傳送者信息或組標(biāo)識(shí)符、數(shù)據(jù)格式以及應(yīng)當(dāng)接收消息的接收節(jié)點(diǎn)的標(biāo)識(shí)符等信息。調(diào)用發(fā)送函數(shù)發(fā)出了給接收者即小節(jié)點(diǎn)I上的特定核的硬件信號(hào)。發(fā)出的信號(hào)在小節(jié)點(diǎn)I上被接收,并且它可以包含識(shí)別接收節(jié)點(diǎn)的信息并可以包含特定的桶(例如bucket_id)信息以及等待被接收的活動(dòng)消息,或者它是用于接收小節(jié)點(diǎn)的關(guān)于消息正在等待的信號(hào),其后函數(shù)被調(diào)用以識(shí)別哪個(gè)節(jié)點(diǎn)接收了消息并且消息正在哪個(gè)桶中等待。這樣的發(fā)送函數(shù)的一個(gè)例子是 MPI_Send (send_addr, communicator_info, data_type, Processl),其中send_addr是指向桶的引用指針或桶的地址,communicator_info是組信息,接收進(jìn)程是該組信息的一部分,data_type是被傳送的數(shù)據(jù)的數(shù)據(jù)格式,且Processl是消息的接收者。
      [0028]在306,接收者進(jìn)程即進(jìn)程I得到信號(hào)。在步驟308,根據(jù)進(jìn)程I在信號(hào)之前還是之后調(diào)用了接收函數(shù),可出現(xiàn)兩種場(chǎng)景。這樣的接收函數(shù)的一個(gè)例子是MPI_Recv。在本公開(kāi)的一個(gè)實(shí)施例中,僅在進(jìn)程I調(diào)用MPI_Recv函數(shù)后才可以接收消息。如果進(jìn)程I沒(méi)有調(diào)用MPI_Recv,硬件信號(hào)保持在未決狀態(tài)。在310,在進(jìn)程I調(diào)用MPI_Recv(recv_addr, communicator_info, data_type, ProcessO)后,recv_addr 被映身寸至丨J bucket_id,且桶存儲(chǔ)器被映射到接收者存儲(chǔ)空間中的接收地址。接收進(jìn)程即進(jìn)程I被使能以讀取recv_addr處的數(shù)據(jù)。已在桶中可用的消息數(shù)據(jù)現(xiàn)在可被進(jìn)程I訪問(wèn)。因此,進(jìn)程I接收消息,且消息已在其存儲(chǔ)器中。在312,來(lái)自桶的硬件信號(hào)被重置以反映正被傳遞的消息的狀態(tài)。
      [0029]圖4示出了本公開(kāi)的一個(gè)實(shí)施例中在消息傳遞期間如何針對(duì)來(lái)自發(fā)送者和接收者進(jìn)程的讀寫(xiě)來(lái)控制桶。在402,發(fā)送者進(jìn)程可保留桶。在404,為僅用于發(fā)送者進(jìn)程的該桶的獨(dú)占讀/寫(xiě)訪問(wèn)設(shè)置控制位。在406,如果發(fā)送者進(jìn)程調(diào)用發(fā)送調(diào)用或函數(shù),則在408為用于發(fā)送者進(jìn)程的共享讀/寫(xiě)訪問(wèn)設(shè)置控制位,且為接收者進(jìn)程發(fā)出硬件信號(hào)。在410,如果接收者進(jìn)程調(diào)用接收調(diào)用或函數(shù),為用于接收者進(jìn)程的共享讀/寫(xiě)訪問(wèn)設(shè)置控制位。在414,如果發(fā)送者進(jìn)程或接收者進(jìn)程調(diào)用取消映射調(diào)用或類似函數(shù),桶與該進(jìn)程斷開(kāi)連接,并針對(duì)仍然具有映射的桶的其他進(jìn)程的獨(dú)占讀/寫(xiě)訪問(wèn)來(lái)設(shè)置控制位。在418,當(dāng)兩個(gè)進(jìn)程都從桶斷開(kāi)時(shí),桶被釋放。
      [0030]圖5示出了在本公開(kāi)的一個(gè)實(shí)施例中的消息桶的例子。該例子示出了用于點(diǎn)到點(diǎn)消息傳遞的兩個(gè)小節(jié)點(diǎn)的桶實(shí)現(xiàn)。桶500可包括存儲(chǔ)陣列508以及遵守網(wǎng)絡(luò)協(xié)議的用于訪問(wèn)存儲(chǔ)陣列的硬件控制邏輯514。桶還可包括狀態(tài)/控制(SC)寄存器502,以及用于存儲(chǔ)陣列508的每個(gè)元素的一組訪問(wèn)位510。SC寄存器502存儲(chǔ)小節(jié)點(diǎn)對(duì)于存儲(chǔ)陣列508的元素的訪問(wèn)的類型的指示。SC寄存器502可指示的訪問(wèn)類型可包括但不限于獨(dú)占寫(xiě)、獨(dú)占讀、共享寫(xiě)、共享讀、獨(dú)占讀寫(xiě)、共享讀寫(xiě)和其他。在一個(gè)實(shí)施例中,存儲(chǔ)陣列508具有與每個(gè)地址相關(guān)的兩個(gè)組,組0512和組1514。考慮小節(jié)點(diǎn)0 (NO) 504上的進(jìn)程分配了桶500的緩沖區(qū)或存儲(chǔ)陣列。桶500給小節(jié)點(diǎn)0504分配獨(dú)占讀/寫(xiě)(RW)狀態(tài)。通過(guò)對(duì)數(shù)據(jù)使用桶的組0512,小節(jié)點(diǎn)0504將消息數(shù)據(jù)寫(xiě)入到桶502。小節(jié)點(diǎn)0504發(fā)出mpi_send,其指示被分配的桶的地址,例如,addr I o消息桶(MB)邏輯對(duì)addrl進(jìn)行解碼,并且基于addrl是否位于相同的芯片(例如小節(jié)點(diǎn)1506)上或addrl是否在芯片外,可出現(xiàn)兩種場(chǎng)景。如果addrl位于相同的芯片上,消息桶502的邏輯例如通過(guò)發(fā)出中斷來(lái)通知小節(jié)點(diǎn)1506。如果addrl不是位于相同的芯片上,消息桶500的邏輯通知連接到芯片的網(wǎng)絡(luò)消息單元(MU)消息已準(zhǔn)備好經(jīng)由芯片上的網(wǎng)絡(luò)接口(未示出)來(lái)發(fā)送。小節(jié)點(diǎn)1506將分配的接收緩沖區(qū)映射到桶500。桶500將讀(R)狀態(tài)分配給小節(jié)點(diǎn)1506,以及將R狀態(tài)分配給小節(jié)點(diǎn)0504。每個(gè)進(jìn)程的訪問(wèn)狀態(tài)和共享狀態(tài)在SC寄存器502中被指示。如果兩個(gè)進(jìn)程僅發(fā)出讀訪問(wèn),數(shù)據(jù)從組0512被讀出,且組I中的數(shù)據(jù)不被指定和訪問(wèn)。
      [0031]在該例子中,存儲(chǔ)器中的兩個(gè)字(w0和wl)被映射到每個(gè)地址字,組0和組I。在寫(xiě)入消息時(shí),它被寫(xiě)入到第一組,且用于被寫(xiě)入到第一字組中的所有字的所有訪問(wèn)位510被設(shè)置為用于w0的11和用于wl的00。如果在訪問(wèn)狀態(tài)被設(shè)為共享后,小節(jié)點(diǎn)0504或小節(jié)點(diǎn)1506發(fā)出對(duì)分配的緩沖區(qū)的寫(xiě)入,則消息桶500檢測(cè)到?jīng)_突。消息桶500將第一組中被修改的字保存在存儲(chǔ)器桶的wl位置,并將僅用于w0中的被修改的字的訪問(wèn)位設(shè)置為01,且將用于wl的設(shè)置為10。于是小節(jié)點(diǎn)I看到其緩沖區(qū)未被修改,且小節(jié)點(diǎn)0看到其修改。如果小節(jié)點(diǎn)0504向分配的緩沖區(qū)發(fā)出對(duì)具有w011和wlOO的字的寫(xiě)入,它將修改的字寫(xiě)入到wl,且消息桶將用于WO的位設(shè)為10,并將用于Wl的位設(shè)為01。這兩組訪問(wèn)位為每個(gè)存儲(chǔ)器元件以及為這兩個(gè)組定義了哪個(gè)進(jìn)程可以訪問(wèn)每個(gè)組。這兩個(gè)訪問(wèn)位為兩個(gè)進(jìn)程中的每個(gè)進(jìn)程定義了該存儲(chǔ)器項(xiàng)中的組的可見(jiàn)性。因此,例如用于wO的值01和用于wl的10指示小節(jié)點(diǎn)0504能訪問(wèn)組1,但不能訪問(wèn)組0,而小節(jié)點(diǎn)I能訪問(wèn)組0但不能訪問(wèn)組I。以這種方式,沖突數(shù)據(jù)有兩個(gè)不同的副本,在發(fā)出mpi_Send調(diào)用后一個(gè)進(jìn)程修改了所述數(shù)據(jù)。小節(jié)點(diǎn)0504和小節(jié)點(diǎn)1506具有其私有的數(shù)據(jù)副本,它們可以修改所述數(shù)據(jù)副本而不改變用于其他進(jìn)程的數(shù)據(jù)。對(duì)于在mpi_Send被發(fā)出后未被任何進(jìn)程寫(xiě)入的存儲(chǔ)器項(xiàng),數(shù)據(jù)被放置在組0中,且用于該存儲(chǔ)器項(xiàng)的訪問(wèn)位是用于wO的11和用于wl的00。
      [0032]圖6是示出在本公開(kāi)的一個(gè)實(shí)施例中調(diào)用緩沖區(qū)副本的流程圖。在602,接收來(lái)自例如被稱為進(jìn)程0的進(jìn)程的對(duì)桶的存儲(chǔ)訪問(wèn)請(qǐng)求。在604,檢查用于進(jìn)程0的桶中的控制位設(shè)置。在本公開(kāi)的一個(gè)實(shí)施例中,一旦桶被映射,僅發(fā)送進(jìn)程0和接收進(jìn)程I能對(duì)其進(jìn)行訪問(wèn)。在606,檢查進(jìn)程0是否能訪問(wèn)該桶。如果是,在608,檢查該請(qǐng)求是否是請(qǐng)求寫(xiě)入到桶。如果是,在610,檢查進(jìn)程0是否具有獨(dú)占訪問(wèn)權(quán)。如果是,在612數(shù)據(jù)被寫(xiě)入到桶存儲(chǔ)器中的第一字組即組O。否則,如果進(jìn)程0不具有獨(dú)占訪問(wèn)權(quán)而是共享訪問(wèn)權(quán),在614,數(shù)據(jù)被寫(xiě)入到桶存儲(chǔ)器中的第二字組即組I。在608,如果確定請(qǐng)求不是寫(xiě)請(qǐng)求,則在616檢查是否存在修改的字。如果是,在618,返回第二字組即組I中的數(shù)據(jù)。如果不是,在620,返回第一字組即組0中的數(shù)據(jù)。盡管該流程圖描述了用于第一進(jìn)程0的訪問(wèn),通過(guò)總是訪問(wèn)第一字組即組0,可執(zhí)行對(duì)來(lái)自接收者進(jìn)程(例如被稱為進(jìn)程I)的對(duì)桶的訪問(wèn)。例如,開(kāi)始寫(xiě)入到共享字的第一小節(jié)點(diǎn)將使用組I字《1來(lái)開(kāi)始,而其他小節(jié)點(diǎn)(接收者小節(jié)點(diǎn))將使用組0字wO來(lái)繼續(xù)。訪問(wèn)位被相應(yīng)地修改,且在存儲(chǔ)陣列中可以是逐行不同的。
      [0033]圖7示出了本公開(kāi)的一個(gè)實(shí)施例中的管芯上的多個(gè)小節(jié)點(diǎn)。圖7示出的管芯可以是一片半導(dǎo)體材料或電介質(zhì),其上可集成(例如安裝、蝕刻或形成)一個(gè)或多個(gè)電子組件。在一個(gè)實(shí)施例中,桶(例如712、714、716、718)可在多節(jié)點(diǎn)芯片702上的所有小節(jié)點(diǎn)(例如704、706、708、710)之間共享,并可以被芯片上的所有小節(jié)點(diǎn)訪問(wèn)。在一個(gè)實(shí)施例中,僅兩個(gè)小節(jié)點(diǎn)一一個(gè)發(fā)送小節(jié)點(diǎn)和一個(gè)接收小節(jié)點(diǎn)一連接到桶。在另一個(gè)實(shí)施例中,每個(gè)桶(例如712、714、716、718)可被映射到多于一個(gè)的小節(jié)點(diǎn)(例如704、706、708、710),其中一個(gè)小節(jié)點(diǎn)發(fā)送消息,而另外的小節(jié)點(diǎn)接收消息。例如,小節(jié)點(diǎn)0 (704)上的進(jìn)程0可將相同的消息發(fā)送到所有的其他小節(jié)點(diǎn),即小節(jié)點(diǎn)I (706)、小節(jié)點(diǎn)2 (708)和小節(jié)點(diǎn)3 (710),在該情況下所有這些小節(jié)點(diǎn)指向相同的桶,并將該桶的存儲(chǔ)區(qū)域映射到其存儲(chǔ)空間,并可訪問(wèn)來(lái)自該相同的桶的數(shù)據(jù)。
      [0034]圖8示出了在本公開(kāi)的一個(gè)實(shí)施例中由進(jìn)程使用桶緩沖區(qū)來(lái)發(fā)送修改的消息時(shí)的示例性場(chǎng)景。開(kāi)始,小節(jié)點(diǎn)0 (804)上的進(jìn)程820發(fā)送消息給小節(jié)點(diǎn)I (806)和小節(jié)點(diǎn)3 (810)。開(kāi)始,小節(jié)點(diǎn)0 (804)是桶01 (812)中的消息的發(fā)送者,且小節(jié)點(diǎn)I (806)和3(810)將作為該消息的接收者指向桶01 (812)。如果小節(jié)點(diǎn)0 (804)上的進(jìn)程820修改其緩沖區(qū)(812)以將其發(fā)送到另一個(gè)進(jìn)程,例如到小節(jié)點(diǎn)2 (808),會(huì)出現(xiàn)該圖中示出的場(chǎng)景。在該情況下,在修改數(shù)據(jù)被寫(xiě)入到桶01之前,生成具有桶01數(shù)據(jù)的副本的新的桶(例如814)以保持給小節(jié)點(diǎn)I (806)和小節(jié)點(diǎn)3 (810)的消息。新的桶(例如814)保持在桶01 (812 )中的消息被修改前該桶中的消息。在一個(gè)實(shí)施例中,硬件控制邏輯在新的桶(例如814)中生成桶01 (812)的副本并改變指針,以使得小節(jié)點(diǎn)I (806)和小節(jié)點(diǎn)3 (810)指向新的桶(例如814)。在另一個(gè)實(shí)施例中,新數(shù)據(jù)(修改的數(shù)據(jù))可被寫(xiě)入到桶02,而桶01保持原始數(shù)據(jù)不變,在該情況下小節(jié)點(diǎn)1806和小節(jié)點(diǎn)3814的指針被保持為指向桶01812 ;且小節(jié)點(diǎn)2808將指向桶02814以接收修改的消息。
      [0035]圖9示出了消息桶的例子,其中提供了多個(gè)小節(jié)點(diǎn)的桶實(shí)現(xiàn),用于將消息傳送到多個(gè)小節(jié)點(diǎn)。桶900包括存儲(chǔ)陣列910、訪問(wèn)位912、狀態(tài)寄存器902和控制邏輯914。存儲(chǔ)陣列910可從多個(gè)小節(jié)點(diǎn)904、906、908來(lái)訪問(wèn),并含有用于桶中的存儲(chǔ)陣列的每個(gè)條目的若干組。桶中的存儲(chǔ)陣列的每行具有L個(gè)平行的字組,L個(gè)字(wO、wl-wl-1)被映射到每個(gè)地址。因此,對(duì)于桶中的存儲(chǔ)空間中的任何地址,字被映射到它。在一個(gè)實(shí)施例中,字的數(shù)量L是2或更多,但少于或等于可對(duì)其進(jìn)行訪問(wèn)的小節(jié)點(diǎn)的數(shù)量。每個(gè)存儲(chǔ)陣列元件具有分配給它的M個(gè)訪問(wèn)位,其中M是可訪問(wèn)該桶并同時(shí)將該桶映射到其地址的小節(jié)點(diǎn)的數(shù)量。用于任何字w-sub-k的第m個(gè)位指定了該字對(duì)第m個(gè)小節(jié)點(diǎn)的所有權(quán)。開(kāi)始,含有字wO的第一組0的所有權(quán)被分配為發(fā)送和接收小節(jié)點(diǎn)。如果發(fā)送或接收小節(jié)點(diǎn)試圖寫(xiě)入到該組0且桶處于共享模式,沖突被檢測(cè)到且新的字被寫(xiě)入到另一個(gè)字,例如字wl。用于字wO和wl的訪問(wèn)位被修改以描述新的所有權(quán)。在該例子中,在試圖寫(xiě)入到該緩沖區(qū)前,用于字wl的訪問(wèn)位被設(shè)置為用于字wO的訪問(wèn)位。用于wO的訪問(wèn)位將被設(shè)置以包括重寫(xiě)的緩沖區(qū)(wO)的接收者。如果發(fā)送小節(jié)點(diǎn)將該緩沖區(qū)(wO)發(fā)送到第三或第四小節(jié)點(diǎn),為發(fā)送者擁有的每個(gè)字設(shè)置更多的所有者位??纱嬖诰彌_區(qū)析最多L個(gè)不同版本,其具有由訪問(wèn)位指定所有權(quán)、以及參與的小節(jié)點(diǎn)和在SC寄存器中指定的桶模式。
      [0036]本公開(kāi)的桶也可被一般化為其他編程模型。
      [0037]例如,通過(guò)使用諸如upc_all_alloc、upc_global_alloc的調(diào)用,通用程序計(jì)數(shù)器(UPC)創(chuàng)建共享的存儲(chǔ)陣列。這些可被所有線程訪問(wèn)。在另一個(gè)方面,MPI遠(yuǎn)程存儲(chǔ)訪問(wèn)(RMA)具有存儲(chǔ)器窗口的概念,每個(gè)進(jìn)程向所有進(jìn)程暴露特定的存儲(chǔ)器大小,例如MPI_WIN_CREATE。當(dāng)這些進(jìn)程或線程位于節(jié)點(diǎn)內(nèi)時(shí),各桶可被用來(lái)將該窗口或陣列相互暴露。桶提供用于訪問(wèn)該陣列或存儲(chǔ)器窗口的必要的“一致性域”。這些模型具有不同的存儲(chǔ)一致性語(yǔ)義,例如UPC要求寫(xiě)入是松馳的還是嚴(yán)格的。RMA還具有本地“相對(duì)”遠(yuǎn)程存儲(chǔ)器窗口的概念,這需要被明確地同步,從而存儲(chǔ)器是一致的。本公開(kāi)的桶邏輯在一個(gè)實(shí)施例中可被擴(kuò)展以包含這些編程模型相關(guān)語(yǔ)義和一致性模型。
      [0038]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼
      [0039]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。[0040]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
      [0041]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
      [0042]可以以一種或多種編程語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述編程語(yǔ)言包括硬件描述語(yǔ)言(HDL),面向?qū)ο蟮木幊陶Z(yǔ)言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過(guò)程式編程語(yǔ)目一諸如“C”語(yǔ)目或類似的編程語(yǔ)目,腳本語(yǔ)言-諸如Perl、VBS語(yǔ)言或類似的語(yǔ)言,或函數(shù)式語(yǔ)言_諸如Lisp、ML,以及面向邏輯的語(yǔ)言-諸如可使用的Prolog語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
      [0043]參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些計(jì)算機(jī)程序指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的函數(shù)/動(dòng)作的裝置。
      [0044]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的函數(shù)/動(dòng)作的指令的制造品(article of manufacture)?
      [0045]計(jì)算機(jī)程序指令也可被加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理設(shè)備或使得一系列可操作步驟在計(jì)算機(jī)上被執(zhí)行的其他裝置、其他可編程設(shè)備或其他裝置以產(chǎn)生計(jì)算機(jī)執(zhí)行的過(guò)程,這樣當(dāng)指令在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行時(shí),提供過(guò)程以實(shí)施在流程圖和/或流程框圖或框圖中執(zhí)行的函數(shù)/行為。
      [0046]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、函數(shù)和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯函數(shù)的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的函數(shù)也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的函數(shù)而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的函數(shù)或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
      [0047]計(jì)算機(jī)程序產(chǎn)品可包括使得在此描述的方法被實(shí)施的所有特點(diǎn),且當(dāng)被加載在計(jì)算機(jī)系統(tǒng)中時(shí),能執(zhí)行方法。計(jì)算機(jī)程序、軟件程序、程序或軟件,在本上下文中指旨在使得具有信息處理能力的計(jì)算機(jī)直接地或在以下操作后執(zhí)行特定功能的一組指令的任何語(yǔ)言、代碼或符號(hào)的任何表達(dá):(a)轉(zhuǎn)換為另一個(gè)語(yǔ)言、代碼或表示;以及/或(b)以不同的材料形式被再現(xiàn)。
      [0048]此處使用的術(shù)語(yǔ)僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個(gè)”和“該”也旨在包括多數(shù)形式,除非上下文另有清楚的規(guī)定。還將理解,當(dāng)在本說(shuō)明中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”明確說(shuō)明存在所陳述的特點(diǎn)、整體、步驟、操作、元件和/或組件,但不排除存在或添加一個(gè)或多個(gè)其他的特點(diǎn)、整體、步驟、操作、元件、組件和/或其組。
      [0049]以下權(quán)利要求中的所有裝置或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、行為和等價(jià)物旨在包括用于結(jié)合在權(quán)利要求中特意闡明的其他元件而執(zhí)行該功能的任何結(jié)構(gòu)、材料或行為。本發(fā)明的說(shuō)明已出于解釋和描述的目的被展示,但不旨在窮盡性的或?qū)⒈景l(fā)明限制在所公開(kāi)的形式。許多修改和變化對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)是明顯的,且不脫離本發(fā)明的精神和范圍。選擇并描述實(shí)施例是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,且使得本領(lǐng)域普通技術(shù)人員能針對(duì)具有適用于所打算的特定用途的各種修改的各種實(shí)施例理解本發(fā)明。
      [0050]本公開(kāi)的各方面可被實(shí)施為程序、軟件或?qū)嵤┰谟?jì)算機(jī)或機(jī)器可用或可讀介質(zhì)中的計(jì)算機(jī)指令,當(dāng)在計(jì)算機(jī)、處理器和/或機(jī)器上執(zhí)行時(shí),其使得計(jì)算機(jī)或機(jī)器執(zhí)行方法的步驟。也提供了由機(jī)器可讀的程序存儲(chǔ)設(shè)備,有形地實(shí)施可由機(jī)器執(zhí)行以執(zhí)行在本公開(kāi)中描述的各種功能和方法的程序。
      [0051]本公開(kāi)的系統(tǒng)和方法可被實(shí)施并運(yùn)行在通用計(jì)算機(jī)或?qū)S糜?jì)算機(jī)系統(tǒng)上。在本申請(qǐng)中使用的術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”和“計(jì)算機(jī)網(wǎng)絡(luò)”可包括固定和/或可移動(dòng)計(jì)算機(jī)硬件、軟件、外設(shè)和存儲(chǔ)設(shè)備的各種結(jié)合。計(jì)算機(jī)系統(tǒng)可包括多個(gè)單個(gè)組件,其被聯(lián)網(wǎng)或以其他方式鏈接以共同執(zhí)行,或可包括一個(gè)或多個(gè)單獨(dú)的組件。本申請(qǐng)的計(jì)算機(jī)系統(tǒng)的硬件和軟件組件可包括并可被包括在諸如臺(tái)式機(jī)、筆記本電腦和/或服務(wù)器的固定和可移動(dòng)裝置中。模塊可以是裝置的組件、軟件、程序或系統(tǒng),其實(shí)施某些“函數(shù)”,其可被實(shí)施為軟件、硬件、固件、電子電路等。
      [0052]以上描述的實(shí)施例是描述性例子,且不應(yīng)理解為本發(fā)明限于這些特定實(shí)施例。因此,可由本領(lǐng)域技術(shù)人員進(jìn)行各種修改和變化而不脫離在所附權(quán)利要求書(shū)中限定的本發(fā)明的精神或范圍。
      【權(quán)利要求】
      1.一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法,包括: 分配桶,該桶包含存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義的硬件控制邏輯,以在第一存儲(chǔ)域上的第一進(jìn)程和第二存儲(chǔ)域上的第二進(jìn)程之間傳送數(shù)據(jù),其中第一存儲(chǔ)域和第二存儲(chǔ)域不被共享,且其中該桶不是第一存儲(chǔ)域或第二存儲(chǔ)域的一部分; 將桶映射到第一進(jìn)程; 由第一進(jìn)程將消息數(shù)據(jù)寫(xiě)到桶,并調(diào)用發(fā)送消息傳遞接口函數(shù),該函數(shù)發(fā)出給第二進(jìn)程的硬件信號(hào);以及 響應(yīng)于第二進(jìn)程調(diào)用接收消息傳遞接口函數(shù),將緩沖區(qū)映射到第二進(jìn)程,其中第二進(jìn)程被使能讀取映射的桶中的數(shù)據(jù)。
      2.如權(quán)利要求1所述的方法,其中第一進(jìn)程是在單個(gè)芯片上具有第一存儲(chǔ)域的第一小節(jié)點(diǎn)的組件,且第二進(jìn)程是在該單個(gè)芯片上具有第二存儲(chǔ)域的第二小節(jié)點(diǎn)的組件。
      3.如權(quán)利要求1所述方法,其中所述桶在單個(gè)芯片上的所有小節(jié)點(diǎn)之間共享。
      4.如權(quán)利要求1所述的方法,其中所述桶被映射到多個(gè)接收小節(jié)點(diǎn)。
      5.如權(quán)利要求1所述的方法,還包括響應(yīng)于第二進(jìn)程調(diào)用接收消息傳遞接口函數(shù),重置硬件信號(hào)。
      6.一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的系統(tǒng),包括: 單個(gè)芯片上的多個(gè)小節(jié)點(diǎn),每個(gè)小節(jié)點(diǎn)具有不與單個(gè)芯片上的其余小節(jié)點(diǎn)共享的、其自己的存儲(chǔ)一致性域,每個(gè)小節(jié)點(diǎn)包括一個(gè)或多個(gè)進(jìn)程核,其中所述多個(gè)小節(jié)點(diǎn)至少包括具有第一進(jìn)程核和第一存儲(chǔ)一致性域的第一小節(jié)點(diǎn),以及具有第二進(jìn)程核和第二存儲(chǔ)一致性域的第二小節(jié)點(diǎn); 桶,其包括存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義硬件控制邏輯,用于在多個(gè)小節(jié)點(diǎn)之間傳送數(shù)據(jù),其中該桶不是小節(jié)點(diǎn)的存儲(chǔ)一致性域的一部分,其中: 第一進(jìn)程核被使能以將桶映射到第一進(jìn)程核,將消息數(shù)據(jù)寫(xiě)入到桶,以及調(diào)用發(fā)送消息傳遞接口函數(shù),該發(fā)送消息傳遞接口函數(shù)發(fā)出對(duì)第二進(jìn)程核的硬件信號(hào),且其中響應(yīng)于第二進(jìn)程核調(diào)用接收消息傳遞接口函數(shù),緩沖區(qū)被映射到第二進(jìn)程核以使能第二進(jìn)程核讀取數(shù)據(jù)。
      7.如權(quán)利要求6所述的系統(tǒng),其中所述桶在單個(gè)芯片上的所有小節(jié)點(diǎn)之間共享。
      8.如權(quán)利要求6所述的系統(tǒng),其中所述桶被映射到多個(gè)接收小節(jié)點(diǎn)。
      9.如權(quán)利要求6所述的系統(tǒng),其中所述存儲(chǔ)陣列包括被映射到每個(gè)地址字的存儲(chǔ)器中的若干字,所述若干字中的每個(gè)對(duì)應(yīng)于可訪問(wèn)所述桶的一個(gè)所述小節(jié)點(diǎn),且所述桶還包括可被操作以存儲(chǔ)位的訪問(wèn)位寄存器,所述位指示哪個(gè)小節(jié)點(diǎn)能訪問(wèn)所述若干字中的哪個(gè)。
      10.如權(quán)利要求9所述的系統(tǒng),其中所述若干字的數(shù)量是2或更多,但少于或等于所述多個(gè)小節(jié)點(diǎn)的數(shù)量。
      11.如權(quán)利要求10所述的系統(tǒng),其中所述桶還包括狀態(tài)寄存器,其可被操作以存儲(chǔ)所述多個(gè)小節(jié)點(diǎn)對(duì)所述寄存器陣列的訪問(wèn)權(quán)限的狀態(tài)。
      12.如權(quán)利要求11所述的系統(tǒng),其中響應(yīng)于第一進(jìn)程核試圖將數(shù)據(jù)寫(xiě)到所述若干字中的第一字,所述桶的硬件控制邏輯可操作以確定第一進(jìn)程核是否對(duì)第一字有獨(dú)占讀寫(xiě)訪問(wèn)權(quán),且如果第一進(jìn)程核對(duì)于第一字具有獨(dú)占讀寫(xiě)訪問(wèn)權(quán),數(shù)據(jù)被寫(xiě)入到第一字,且如果第一進(jìn)程核對(duì)第一字沒(méi)有獨(dú)占讀寫(xiě)訪問(wèn)權(quán),數(shù)據(jù)被寫(xiě)入到所述若干字中的第二字,且所述訪問(wèn)位寄存器被修改以指示第一進(jìn)程核現(xiàn)在對(duì)第二字有訪問(wèn)權(quán)。
      13.一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的方法,包括: 保留桶,其包含存儲(chǔ)陣列和支持消息傳遞接口語(yǔ)義的硬件控制邏輯,用于在第一存儲(chǔ)域上的第一進(jìn)程和第二存儲(chǔ)域上的第二進(jìn)程之間傳送數(shù)據(jù),其中第一存儲(chǔ)域和第二存儲(chǔ)域不被共享,且其中該桶不是第一存儲(chǔ)域或第二存儲(chǔ)域的一部分; 設(shè)置多個(gè)控制位以指示僅用于第一進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn); 接收由第一進(jìn)程調(diào)用的發(fā)送調(diào)用; 設(shè)置控制位以指示用于第一進(jìn)程的共享讀寫(xiě)訪問(wèn),并發(fā)出用于第二進(jìn)程的硬件信號(hào); 接收由第二進(jìn)程調(diào)用的接收調(diào)用; 設(shè)置控制位以指示用于第二進(jìn)程的共享讀寫(xiě)訪問(wèn); 響應(yīng)于從第一進(jìn)程接收到取消映射調(diào)用,設(shè)置控制位以指示用于第二進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn);以及 響應(yīng)于從第二進(jìn)程接 收到取消映射調(diào)用,設(shè)置控制位以指示用于第一進(jìn)程的獨(dú)占讀寫(xiě)訪問(wèn)。
      14.如權(quán)利要求13所述的方法,還包括: 響應(yīng)于確定所有進(jìn)程都已從桶取消映射,釋放桶。
      15.如權(quán)利要求14所述的方法,還包括: 從第一進(jìn)程接收對(duì)桶的存儲(chǔ)訪問(wèn)請(qǐng)求,檢查與第一進(jìn)程有關(guān)的控制位; 響應(yīng)于確定所述控制位指示第一進(jìn)程具有訪問(wèn)權(quán),確定所述存儲(chǔ)訪問(wèn)請(qǐng)求是否是寫(xiě)請(qǐng)求; 響應(yīng)于確定所述存儲(chǔ)訪問(wèn)請(qǐng)求是寫(xiě)請(qǐng)求,確定第一進(jìn)程是否具有獨(dú)占讀寫(xiě)訪問(wèn)權(quán); 響應(yīng)于確定第一進(jìn)程具有獨(dú)占讀寫(xiě)訪問(wèn)權(quán),寫(xiě)入到存儲(chǔ)陣列的第一字組; 響應(yīng)于確定第一進(jìn)程沒(méi)有獨(dú)占讀寫(xiě)訪問(wèn)權(quán),寫(xiě)入到存儲(chǔ)陣列的第二字組并指示第一字組的修改; 響應(yīng)于確定存儲(chǔ)訪問(wèn)請(qǐng)求不是寫(xiě)請(qǐng)求,確定是否存在被修改的字,且響應(yīng)于確定存在被修改的字,返回第二字組中的數(shù)據(jù),且響應(yīng)于確定被修改的字不存在,返回第一字組中的數(shù)據(jù)。
      16.一種用于管芯內(nèi)小節(jié)點(diǎn)間消息通信的系統(tǒng),該系統(tǒng)包括被配置為執(zhí)行權(quán)利要求1到5、13到15中任一項(xiàng)的方法步驟的裝置。
      【文檔編號(hào)】G06F15/163GK103455371SQ201310209314
      【公開(kāi)日】2013年12月18日 申請(qǐng)日期:2013年5月30日 優(yōu)先權(quán)日:2012年5月31日
      【發(fā)明者】A·R·馬米達(dá)拉, V·薩拉普拉, R·W·維斯內(nèi)斯基 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1