內(nèi)存分配加速器的制造方法
【專利說明】?jī)?nèi)存分配加速器
【背景技術(shù)】
[0001 ] 除非本文中另有指示,本部分中描述的材料和術(shù)語并不是針對(duì)本申請(qǐng)中權(quán)利要求 的現(xiàn)有技術(shù),并且不因包括在本部分中而被承認(rèn)是現(xiàn)有技術(shù)。
[0002] 在多核架構(gòu)中,多個(gè)處理器內(nèi)核可被包括在單個(gè)集成電路晶粒中或包括在設(shè)置在 單個(gè)芯片封裝件中的多個(gè)集成電路晶粒上。高速緩存可以被用于存儲(chǔ)供處理器內(nèi)核中的一 個(gè)或多個(gè)訪問的數(shù)據(jù)。數(shù)據(jù)能夠是存儲(chǔ)在通常定位在晶粒外部的較大內(nèi)存中的數(shù)據(jù)子集。 每個(gè)內(nèi)核可以被提供有為內(nèi)核存儲(chǔ)數(shù)據(jù)的高速緩存。
[0003] 概述
[0004] 在一些示例中,大致描述了用于為處理器分配內(nèi)存的方法。該方法可以包括由處 理器生成分配所請(qǐng)求內(nèi)存塊的請(qǐng)求。該方法還可以包括由內(nèi)存分配加速器接收請(qǐng)求,該內(nèi) 存分配加速器被配置為與處理器通信。該方法可以包括由內(nèi)存分配加速器處理該請(qǐng)求,以 識(shí)別與該請(qǐng)求相對(duì)應(yīng)的特定內(nèi)存塊的地址。該方法還可以包括由內(nèi)存分配加速器將該地址 返回至處理器。
[0005] 在一些示例中,片(tiles)可以包括處理器內(nèi)核、高速緩存以及內(nèi)存分配加速器, 該內(nèi)存分配加速器被配置為與內(nèi)核以及高速緩存通信。處理器可以被配置為由處理器生成 分配所請(qǐng)求內(nèi)存塊的請(qǐng)求。該內(nèi)存分配加速器可以被配置為接收該請(qǐng)求。該內(nèi)存分配加速 器可以被配置為處理該請(qǐng)求,以識(shí)別與該請(qǐng)求相對(duì)應(yīng)的特定內(nèi)存塊的地址。該內(nèi)存分配加 速器可以被配置為將該地址返回至處理器。
[0006] 在一些示例中,內(nèi)存分配加速器可以包括存儲(chǔ)器和控制器,該控制器與該存儲(chǔ)器 通信。該控制器可以被配置為接收分配所請(qǐng)求內(nèi)存塊的請(qǐng)求。該控制器可以被配置為處理 該請(qǐng)求,以識(shí)別與該請(qǐng)求相對(duì)應(yīng)的特定內(nèi)存塊的地址。該控制器可以被配置為將地址返回。
[0007] 前面的概述僅僅是示例性的,而不意在以任何方式進(jìn)行限制。通過參考附圖以及 下面的詳細(xì)說明,除了上文所描述的示例性的方面、實(shí)施例、術(shù)語和特征之外,另外的方面、 實(shí)施例、術(shù)語和特征將變得清晰可見。
【附圖說明】
[0008] 通過下面結(jié)合附圖給出的詳細(xì)說明和隨附的權(quán)利要求,本公開的前述特征以及其 它特征將變得更加清晰。應(yīng)理解的是,這些附圖僅描繪了依照本公開的多個(gè)實(shí)施例,因此, 不應(yīng)視為對(duì)本公開范圍的限制,將通過利用附圖結(jié)合附加的具體描述和細(xì)節(jié)對(duì)本公開進(jìn)行 說明,在附圖中:
[0009] 圖1示出了能夠用于實(shí)施內(nèi)存分配加速器的示例系統(tǒng);
[0010] 圖2示出了能夠用于實(shí)施圖1的內(nèi)存分配加速器的示例系統(tǒng),其顯示與可以使用 的元數(shù)據(jù)相關(guān)的額外細(xì)節(jié);
[0011] 圖3示出了能夠用于實(shí)施圖2的內(nèi)存分配加速器的示例系統(tǒng),其顯示包括預(yù)分配 表的額外細(xì)節(jié);
[0012] 圖4描述了用于實(shí)施內(nèi)存分配加速器的示例處理的流程圖;
[0013] 圖5示出了能夠用于實(shí)施內(nèi)存分配加速器的計(jì)算機(jī)程序產(chǎn)品;以及
[0014] 圖6是示出了被設(shè)置為實(shí)施內(nèi)存分配加速器的示例計(jì)算設(shè)備的框圖;
[0015] 所有附圖都根據(jù)本文中所描述的至少一些實(shí)施例設(shè)置。
【具體實(shí)施方式】
[0016] 在下面的詳細(xì)說明中,將參考附圖,附圖構(gòu)成了詳細(xì)說明的一部分。在附圖中,除 非上下文指出,否則相似的符號(hào)通常表示相似的組件。在詳細(xì)說明、附圖和權(quán)利要求中所描 述的示例性實(shí)施例不意在限制??梢允褂闷渌鼘?shí)施例,并且可以做出其它改變,而不偏離本 文呈現(xiàn)的主題的精神或范圍。將易于理解的是,如本文大致描述且如圖中所圖示的,本公開 的方面能夠以各種不同配置來布置、替代、組合、分離和設(shè)計(jì),所有這些都在本文中明確地 構(gòu)思出。
[0017] 本公開一般尤其涉及與內(nèi)存分配加速器有關(guān)的方法、裝置、系統(tǒng)、設(shè)備和計(jì)算機(jī)程 序廣品。
[0018] 簡(jiǎn)而言之,大致描述了用于實(shí)施內(nèi)存分配加速器的方法和系統(tǒng)的技術(shù)。處理器可 以生成分配所請(qǐng)求內(nèi)存塊的請(qǐng)求。該請(qǐng)求可以由內(nèi)存分配加速器接收,該內(nèi)存分配加速器 被配置為與處理器通信。內(nèi)存分配加速器可以處理該請(qǐng)求,以識(shí)別與該請(qǐng)求相對(duì)應(yīng)的特定 內(nèi)存塊的地址并可將該地址返回至處理器。
[0019] 圖1示出了根據(jù)本文描述的至少一些實(shí)施例設(shè)置的用于實(shí)施內(nèi)存分配加速器的 示例系統(tǒng)。示例系統(tǒng)100可以包括晶粒102、硬件控制器106和/或內(nèi)存108,其都被配置 為與彼此通信。硬件控制器106和/或內(nèi)存108可以被物理地定位在晶粒102外部。晶 粒102可以包括片200,片200包括片200a、200b、200c和/或200d。片200可以包括處理 器內(nèi)核(本文中為"內(nèi)核"或"處理器"或"處理器內(nèi)核")110 (包括內(nèi)核ll〇a、110b、110c、 110d)、高速緩存114(包括高速緩存114a、114b、114c和/或114d)和/或路由器300(包 括路由器300a、300b、300c和/或300d)。路由器300可以被配置為通過網(wǎng)絡(luò)150通信。高 速緩存114可以是例如L2或L3高速緩存。
[0020] 片200a可以包括內(nèi)核110a、高速緩存114a和/或路由器300a。片200b可以包括 內(nèi)核110b、高速緩存114b和/或路由器300b。片200c可以包括內(nèi)核110c、高速緩存114c 和/或路由器300c。片200d可以包括內(nèi)核110d、高速緩存114d和/或路由器300d。
[0021] 硬件控制器106可以被配置為從程序80或操作系統(tǒng)104接收指令90。指令90可 以與程序80的運(yùn)行相關(guān)。響應(yīng)于指令90,硬件控制器106可以在晶粒102中選擇一個(gè)或多 個(gè)片200,以運(yùn)行程序80。
[0022] -個(gè)或多個(gè)內(nèi)核110可以包括內(nèi)存分配加速器。針對(duì)如所示出的內(nèi)核110a,內(nèi)核 110a可以包括內(nèi)存分配加速器116。內(nèi)存分配加速器116可以被配置為與內(nèi)核110a通信 并且可以是內(nèi)核ll〇a的功能單元。
[0023] 如以下將更具體描述的,內(nèi)存分配加速器116可以是針對(duì)特定功能性能的硬件實(shí) 施功能單元。內(nèi)存分配加速器116可以針對(duì)分配由內(nèi)核110a使用的內(nèi)存的功能。內(nèi)核110a 可以例如向內(nèi)存108請(qǐng)求分配內(nèi)存塊。分配內(nèi)存的請(qǐng)求可以由內(nèi)存分配加速器116接收和 處理。內(nèi)存分配加速器116可以識(shí)別與該請(qǐng)求相對(duì)應(yīng)的內(nèi)存塊的起始地址。響應(yīng)于該請(qǐng)求, 內(nèi)存分配加速器116可以向內(nèi)核110a分配內(nèi)存塊。內(nèi)存分配加速器116可以向內(nèi)核110a 提供分配至內(nèi)核ll〇a的內(nèi)存塊的起始位置的地址。在分配內(nèi)存塊并提供地址之后,內(nèi)核 110a可以使用內(nèi)存塊來繼續(xù)處理程序80。
[0024] 圖2示出了根據(jù)本文描述的至少一些實(shí)施例設(shè)置的能夠用于實(shí)施圖1的內(nèi)存分配 加速器的示例系統(tǒng),其顯示與可以使用的元數(shù)據(jù)相關(guān)的額外細(xì)節(jié)。圖2大致與圖1的系統(tǒng) 1〇〇類似,其具有額外的細(xì)節(jié)。為清楚描述的目的,圖2中與圖1中的組件標(biāo)記相同的那些 組件將不再次描述。
[0025] 內(nèi)存分配加速器116可以存儲(chǔ)并保持元數(shù)據(jù)表122。元數(shù)據(jù)表122可以被用于跟 蹤待分配至處理器ll〇a的地址。元數(shù)據(jù)表122可以被存儲(chǔ)在例如高速緩存114中,其在所 分配的地址處開始(以下描述)??膳c由處理器ll〇a執(zhí)行的處理的固定地址區(qū)域相關(guān)地 存儲(chǔ)元數(shù)據(jù)122的地址。例如,由程序80使用的堆(heap)的第一頁可以被保留為元數(shù)據(jù) 122可以被存儲(chǔ)的地址。在另一示例中,處理器110a可以包括寄存器132,其被用于存儲(chǔ)元 數(shù)據(jù)122的起始地址或地址。由于環(huán)境或程序在處理器110a中轉(zhuǎn)換,內(nèi)核110a的處理器 狀態(tài)(包括元數(shù)據(jù)表122的地址)可以被保持在內(nèi)核110a中的寄存器132中。
[0026] 元數(shù)據(jù)表122可以包括空閑列表124和/或池列表(poollist) 126??臻e列表124 可以包括最近可用的內(nèi)存塊的標(biāo)識(shí)。例如,在空閑列表124中標(biāo)識(shí)的內(nèi)存塊可以在當(dāng)前被 存儲(chǔ)在高速緩存114a中但已經(jīng)被解除分配。這些內(nèi)存塊能夠被迅速重新使用,并且這種重 新使用可以避免高速緩存缺失的發(fā)生。循環(huán)解除分配的塊可以利用時(shí)間局部性(temporal locality),因?yàn)樗h(huán)的塊能夠被快速循環(huán)。池列表126可以包括內(nèi)存108中地址的標(biāo)識(shí), 其中新的內(nèi)存塊可用于被分配。池列表126可以包括儲(chǔ)存器(bins),其包括各種尺寸的內(nèi) 存塊。例如,儲(chǔ)存器可以包括具有8或16字節(jié)的倍數(shù)(如圖2中所示為16字節(jié)的倍數(shù)) 的尺寸的塊。池列表126可以幫助利用類似尺寸的塊的空間格局(spatialpattern)的分 配。池列表126還可以包括剩余塊數(shù)量字段"Nleft"。剩余塊數(shù)量字段Nleft可以指示所 指示塊尺寸的池中的可用塊的數(shù)量。
[0027] 空閑列表124可以被配置為存儲(chǔ)指向所指示尺寸的內(nèi)存塊的起始地址的指針 ("HeadPtr")。例如,空閑列表124可以包括指向尺寸為16字節(jié)("szl6")的內(nèi)存塊的 起始地址的指針。類似地,空閑列表124可以包括指向尺寸為32字節(jié)("sz32")、48字節(jié) ("sz48")或512字節(jié)("sz512")的內(nèi)存塊的起始地址的指針。
[0028] 池列表126可以存儲(chǔ)適于指向具有所指示尺寸的內(nèi)存塊的當(dāng)前起始地址的當(dāng)前 指針("CurPtr")。池列表126可以包括指向池的預(yù)先分配的塊的指針。池可以是內(nèi)存108 中具有統(tǒng)一尺寸的塊的連續(xù)內(nèi)存地址范圍。來自池的塊可以通過識(shí)別指向塊的開始的當(dāng)前 指針的值而被分配。內(nèi)存分配加速器116可以將在塊的開始處地址的值返回至內(nèi)核110a。 內(nèi)存分配加速器116之后可以按照塊的尺寸增加指針的地址,從而指向內(nèi)存108中的新地 址。例如,池列表126