亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

存儲器碎片整理的數(shù)據(jù)處理系統(tǒng)和方法

文檔序號:6566561閱讀:194來源:國知局
專利名稱:存儲器碎片整理的數(shù)據(jù)處理系統(tǒng)和方法
技術(shù)領域
本發(fā)明涉及一種包括至少一個處理單元和存儲器的數(shù)據(jù)處理系 統(tǒng),以及一種針對數(shù)據(jù)處理系統(tǒng)內(nèi)的存儲器碎片整理的方法。
背景技術(shù)
在現(xiàn)代嵌入式系統(tǒng)中,尤其是在用于流處理的嵌入式系統(tǒng)中,可 用(片上)存儲器的管理對于其整體性能非常重要。典型地,提供存 儲器管理器來管理存儲器?;旧贤ㄟ^分配和釋放部分存儲器的過程來執(zhí)行管理??蓪⒋鎯ζ鞣譃槎鄠€塊。通過針對n個連續(xù)字節(jié)的地址空 間的請求、以及返回指示這種地址空間的指針,來執(zhí)行分配。通過在 不再需要時釋放所指示的地址空間或塊來執(zhí)行釋放。此外,存儲器管 理器跟蹤已分配塊之間的未分配塊或自由塊。然而,隨著連續(xù)的分配 和釋放,存儲器成為碎片,使得由于沒有足夠的連續(xù)地址,新數(shù)據(jù)不 能夠?qū)懭氪鎯ζ?。存在多種技術(shù),用于執(zhí)行存儲器的碎片整理,即壓縮和碎片收集。 壓縮技術(shù)基于將所有已分配塊移到存儲器的一端,以便組合所有的自 由地址空間。移動已分配塊包括復制已分配塊中的所有數(shù)據(jù)。首先計 算所有每個塊的新位置,已確定塊要被移動或復制的距離。然后,通 過添加指針所指的塊要移動的量,來更新每個指針。其后,移動或復 制數(shù)據(jù)。垃圾收集可以看作自動存儲器管理策略,用于識別并移動任 何無法到達的存儲器空間,并收回該存儲器空間。垃圾收集識別不可 訪問的塊,并可通過引用計數(shù)(reference counting)、標記和掃描 (mark-and-sweep)以及生成算法(generational algorithm), 來執(zhí)4亍i立圾 收集。引用計數(shù)在每個塊中保持對指向塊的指針數(shù)目的計數(shù)。在計數(shù) 下降到零時,釋放該塊。標記和掃描技術(shù)包括對所有非垃圾塊進行標 記、并掃描所有塊,并且將未標記的塊返回到自由塊列表中。掃描通 常還包括上述壓縮。生成收集包括將存儲器分為不同的空間。將所有 塊復制到新的空間,以釋放舊空間,并且可添加到自由塊列表中。US 6,286,016涉及一種數(shù)據(jù)處理系統(tǒng),通過動態(tài)地擴展并壓縮堆 棧(heap)來實時收集垃圾。將存儲器分為至少兩個部分。將一個存 儲器部分中的可到達存儲器塊或行復制到第二部分,使得在第一存儲 器部分中僅剩下無法到達的塊或行。由于必須在存儲器部分之間復制 數(shù)據(jù),所以該技術(shù)需要額外的帶寬和額外的時鐘周期。US 5,218,698涉及一種存儲器管理方法,用于通過從存儲器中丟 棄廢棄對象來收集垃圾。識別所有可訪問的對象,并將其復制到附加 復制空間。因此,需要額外對數(shù)據(jù)進行復制。在Lim等的"A memory-efficient real-time non-copying garbage collector", SIGPLAN Notices, vol.34, no.3, pp.ll8-129,1999年3月中, 描述了一種垃圾收集器。使用逐頁收集來定位自由空間的頁,如果需 要,在自由列表之間動態(tài)地重新分配自由空間的頁。虛擬存儲器用于 動態(tài)地將自由頁映射到連續(xù)范圍。這樣,將碎片縮減為單個頁。如果 頁數(shù)較少,則列表較小,碎片較大。對于較小的碎片,列表將增長, 會消耗大量的存儲器空間。例如,如果將16M字節(jié)的存儲器分為100Kb 的塊,則需要640個條目的列表的存儲器空間,而如果將16M字節(jié)的存 儲器分為100字節(jié)的塊,則需要640000個條目的存儲器空間。上述問題同樣出現(xiàn)在具有多個處理單元的數(shù)據(jù)處理系統(tǒng)中,即多 處理器系統(tǒng),其通過FIFO在多個處理單元之間彼此進行通信。FIFO是 一個連續(xù)的存儲器塊,在該存儲器塊中可分配多個邏輯FIFO。 一個處 理單元用作產(chǎn)生器,產(chǎn)生數(shù)據(jù)或?qū)?shù)據(jù)寫入FIFO,而另一個處理單元 用作消耗器,讀取或消耗來自FIFO的數(shù)據(jù)。然而,如果FIFO滿或空, 則數(shù)據(jù)的產(chǎn)生或消耗將停止或中斷。特別地,如果處理單元正在處理多個不同的任務或者多個處理單 元訪問單個FIFO處理器,則在運行時間啟動和停止了一些任務,則 FIFO處理器成為碎片。每個不同的處理任務需要FIFO處理器的一部
分。在一個時間點處, 一個任務可停止,該任務不再使用與該任務相 關(guān)聯(lián)或為該任務保留的存儲器位置,該存儲器位置重新變?yōu)榭捎?。?而,后續(xù)任務可能在上述任務停止之前就已經(jīng)啟動,則該后續(xù)任務被 分配到上述第二任務之后的存儲器地址范圍。然而,如果該第二任務 停止,則由于兩個任務之間的地址范圍未由任何任務的數(shù)據(jù)占據(jù),則存儲器變?yōu)樗槠R虼?,可能出現(xiàn)以下情況,即另一任務請求向FIFO 存儲器進行寫訪問,但是遭到拒絕,即使在FIFO存儲器中有足夠的空 間,因為該空間未通過公共地址范圍相關(guān)聯(lián),而是FIFO存儲器上的碎片。發(fā)明內(nèi)容因此,本發(fā)明的目的是提供一種數(shù)據(jù)處理系統(tǒng)以及一種存儲器碎 片整理方法,其能夠通過對可用存儲器進行碎片整理,有效地使用可 用的存儲器,但是不會顯著降低性能。由根據(jù)權(quán)利要求l所述的數(shù)據(jù)處理器系統(tǒng)、根據(jù)權(quán)利要求4所述的 存儲器碎片整理方法以及根據(jù)權(quán)利要求5所述的電子設備來實現(xiàn)該目 的。因此,在基于流的通信環(huán)境下提供一種數(shù)據(jù)處理系統(tǒng)。該數(shù)據(jù)處理系統(tǒng)包括至少一個處理單元,用于對多個處理任務進行基于流的 處理;存儲器裝置,具有地址范圍;以及多個FIFO存儲器,所述多個 FIFO存儲器分別映射到存儲器裝置的地址范圍的一部分。每個FIFO與 所述多個處理任務之一相關(guān)聯(lián),以便能夠進行通信。提供地址轉(zhuǎn)換單 元,用于識別存儲器裝置中當前未由所述多個FIFO使用的地址范圍, 并將至少一個FIFO的地址范圍移到存儲器裝置中當前未使用的地址 范圍。因此,可避免復雜的垃圾收集方案,并且無需實際的數(shù)據(jù)復制, 減小了復制數(shù)據(jù)的開銷。此外,在存儲器碎片整理期間,不同任務的 時間行為不受影響。描述了一種即使不考慮碎片也不需要自由列表的 方法。根據(jù)本發(fā)明的一個方面,地址轉(zhuǎn)換單元適用于將FIFO的地址范圍
移到存儲器裝置中鄰接更高或鄰接更低的當前未使用的地址范圍。根據(jù)本發(fā)明的另一個方面,讀指針和寫指針每個均與FIFO相關(guān) 聯(lián)。 一互讀指針和寫指針達到FIFO的末端,則地址轉(zhuǎn)換單元將每個指 針改變?yōu)樗频降牡刂贩秶?。在運行時間,僅更新寫和讀指針,來執(zhí) 行碎片整理。本發(fā)明還涉及一種在基于流的通信環(huán)境中的數(shù)據(jù)處理系統(tǒng)中的 存儲器的碎片整理的方法,該數(shù)據(jù)處理系統(tǒng)具有至少一個處理單元, 用于對多個處理任務進行基于流的處理;存儲器裝置,具有地址范圍; 以及多個FIFO存儲器,所述多個FIFO存儲器分別映射到存儲器裝置的 地址范圍的一部分。每個FIFO與所述多個處理任務之一相關(guān)聯(lián),以便 能夠進行通信。識別存儲器裝置中當前未由所述多個FIFO使用的地址 范圍。將至少一個FIFO的地址范圍移到存儲器裝置中當前未使用的地 址范圍。本發(fā)明還涉及一種在基于流的通信環(huán)境中的電子設備。該電子設 備包括至少一個處理單元,用于對多個處理任務進行基于流的處理; 存儲器裝置,具有地址范圍;以及多個FIFO存儲器,所述多個FIFO存 儲器分別映射到存儲器裝置的地址范圍的一部分。每個FIFO與所述多 個處理任務之一相關(guān)聯(lián),以便能夠進行通信。提供地址轉(zhuǎn)換單元,用 于識別存儲器裝置中當前未由所述多個FIFO使用的地址范圍,并將至 少一個FIFO的地址范圍移到存儲器裝置中當前未使用的地址范圍。本發(fā)明基于以下理念改善基于FIFO的媒體流處理環(huán)境中的存儲 器碎片整理。在執(zhí)行任務時,每次將一個邏輯FIFO的位置移到存儲器 中的最高/最低空位置。在特定時間周期之后,所有邏輯FIFO均被連續(xù) 地放置在存儲器中??赏ㄟ^一旦達到FIFO的末端并且出現(xiàn)更高/更低的 空位置、則改變FIFO的讀/寫指針(至更高/更低空位置),來實現(xiàn)位置 轉(zhuǎn)移。


參考下面所述的實施例,闡述本發(fā)明的這些和其它方面,并且本 發(fā)明的這些和其它方面將顯而易見。
圖1示出了根據(jù)本發(fā)明的片上系統(tǒng)的基本構(gòu)造的框圖;以及 圖2示出了存儲器的碎片的基本表示。
具體實施方式
本發(fā)明的優(yōu)選實施例的構(gòu)造特別地設計用于處理多處理環(huán)境中的 連續(xù)媒體流,即,該構(gòu)造設計用于媒體處理應用,能夠在運行時間進 行重新配置,而不會顯著降低性能。這種媒體應用的信號處理包括利 用FIFO周期通信行為來進行基于流的處理。有效的邏輯FIFO實現(xiàn)要 求一個FIFO的地址范圍連續(xù),使得通過FIFO中指針的遞增可找到 FIFO中的下一個字。圖1示出了根據(jù)本發(fā)明優(yōu)選實施例的片上系統(tǒng)的構(gòu)造的框圖。該 系統(tǒng)包括第一和第二處理單元PU1、 PU2、存儲器裝置MEM和地址 轉(zhuǎn)換單元ATU。第一和第二處理單元PU1、 PU2每個均與存儲器和地 址轉(zhuǎn)換單元ATU相連。存儲器裝置MEM和地址轉(zhuǎn)換單元ATU也相 連。盡管這里示出了兩個處理單元,圖1的構(gòu)造也可通過多個處理單 元來實現(xiàn)。處理單元PU1、 PU2與存儲器MEM之間的連接可涉及數(shù) 據(jù)連接或數(shù)據(jù)總線,而處理單元PU1、 PU2經(jīng)由地址轉(zhuǎn)換單元ATU與 存儲器裝置之間的連接涉及地址連接或地址總線。地址轉(zhuǎn)換單元ATU 用于將處理單元PU1、 PU2的地址范圍轉(zhuǎn)換為存儲器裝置MEM的地 址范圍,即將邏輯地址轉(zhuǎn)換為實際物理地址。處理單元PU1、 PU2的 通信優(yōu)選地是基于FIFO的,其中FIFO映射到存儲器裝置MEM,即 FIFO是映射到存儲器裝置MEM的存儲器。可選地,可在處理單元PU1、 PU2與存儲器裝置MEM之間連接 切換裝置SM(未示出),以便選擇處理單元PU1、 PU2之一,并將所 選的處理單元PU1、 PU2連接到存儲器裝置MEM。附加地或擇一地, 還可提供資源管理單元RMU (未示出),其與地址轉(zhuǎn)換單元ATU和存 儲器裝置MEM相連。資源管理單元RMU用于管理整個數(shù)據(jù)處理系 統(tǒng)的資源。圖2示出了圖1的存儲器裝置的碎片的基本表示。這里,在三個 不同的時刻,即t-x, t=x+y和t=x+y+z,示出了存儲器裝置MEM中 的情況。存儲器裝置MEM包括從0至70的地址范圍AD。每個任務jl-j5與數(shù)據(jù)處理器系統(tǒng)所處理的流之一的處理相對應,并實現(xiàn)為 FIFO。每個任務使用并占用存儲器裝置MEM的存儲空間的一部分。 在t-x處,將4個任務的數(shù)據(jù)存儲在存儲器裝置MEM中。第一任務 jl需要IO個地址或IO個存儲器位置,即從1至10。第二任務j2需 要20個存儲器位置(從10至30),第三任務j3需要20個存儲器位 置(從30至50),第四任務j4需要IO個存儲器位置(從50至60)。 在t-x+y時,第二任務j2的處理停止,并且不再需要存儲器位置10-29, 并釋放存儲器位置10-29。在t-x+y+z時,需要30個連續(xù)存儲器位置 的第五任務j5啟動。然而,由于在存儲器裝置MEM中沒有30個連 續(xù)或連貫的存儲器位置,所以拒絕第五任務j5。為了避免存儲器空間成為碎片的問題,在執(zhí)行任務時,即在運行 時間,將與一個任務相關(guān)聯(lián)的一個邏輯FIFO移到存儲器裝置MEM中 最高或最低的未占用位置。這可以在并未實際復制數(shù)據(jù)的情況下實現(xiàn)。 通過在FIFO的末端到達原始位置之后,繼續(xù)讀取或?qū)懭胄碌母可?的位置,可向上移動任務的FIFO的位置。參考基于圖2的情況來描 述該方案。在第三任務的數(shù)據(jù)達到地址49 (在t-x+y)之后,將該任 務的后續(xù)數(shù)據(jù)連續(xù)地寫入存儲器地址范圍10-29。這同樣適用于從存 儲器空間或與第三任務j3相關(guān)聯(lián)的FIFO讀取數(shù)據(jù)的情況。換言之, 只要已經(jīng)訪問了 FIFO中最后的數(shù)據(jù)項,并且處理要通過訪問FIFO中 的第一數(shù)據(jù)項來繼續(xù),則將FIFO的位置改變?yōu)猷徑?next)靠上(靠 下)的自由存儲器空間,使得將下一個數(shù)據(jù)項寫入存儲器裝置中不同 的更靠上的地址中。將FIFO的地址范圍向上移到FIFO中最后的數(shù)據(jù) 項之后。只要已經(jīng)將寫和讀指針移到了地址范圍10-29,則可釋放先 前由第三任務j3占用的存儲器范圍30-49,并且通過將指針更新為以 30開始的地址范圍,可由第四任務j4來重新使用該地址范圍。 一旦 移動了第四任務j4的FIFO,則可將第五任務j5的FIFO容納在存儲 器裝置MEM中。地址轉(zhuǎn)換單元ATU設計用于監(jiān)控系統(tǒng)的地址總線。它可檢測每個 FIFO的末端。 一旦達到FIFO的末端,則進行對FIFO的該末端的讀/ 寫,將連續(xù)讀/寫的指針(或地址)改變?yōu)橄乱粋€靠上的自由地址。因 此,地址轉(zhuǎn)換單元ATU還必須識別未使用的存儲器空間,以確定是否 可向上移動FIFO的地址范圍,從而成功地避免存儲器碎片。根據(jù)本 實施例,地址轉(zhuǎn)換單元ATU以硬件實現(xiàn)。但是,軟件實現(xiàn)也是可以的。這種實現(xiàn)的偽代碼描述如下If(wp—base==base+range) wp—base=p—base;wp=wp—b ase+wp—curr;wp—curr=(wp—cirr十1 )%range;if(rp==base+range)rp—base=p—base;signal—finish_move();rp=rp—base+rp—curr;rp—curr=(rp—curr十1 )%range;在邏輯FIFO中,使用讀指針rp和寫指針wp。讀指針的值僅由消 耗方更新,而寫指針的值僅由產(chǎn)生方更新。由于只有一個任務更新這 些指針,所以不需要使用標志(semaphore)。消耗方和產(chǎn)生方任務當 然可以讀取兩個指針。根據(jù)兩個指針wp、 rp之差和FIFO的字數(shù)的容 量,可得到FIFO中的數(shù)據(jù)量以及FIFO中的空間大小。例如,如果令 牌大小是一個字,則讀指針減去寫指針的結(jié)果表明在FIFO中存儲了 多少數(shù)據(jù)字。FIFO中的空間大于容量-(wp-rp)。通過在指針中保留 附加的MSB位,可處理指針rp、 wp的圍包效應(wrap around effect)。 關(guān)于更多的信息,參見Lippens等的"A Scalable and Flexible Data Synchronization Scheme for Embedded HW-SW Shared-Memory Systems" ,Proceedings of the 14th international symposium on Systems synthesis (ISSS,Ol) September 30-October 03, 2001, Montreal, Canada。FIFO起始于在上述偽代碼中標記為"base"的特定地址。對FIFO 的訪問與base有關(guān)。在寫指針在當前位置wp一curr超過FIFO的末端 (base+range)之后,改變指針wp的"base",即wp—base。這樣,將新 數(shù)據(jù)寫入存儲器中較低的位置,并且FIFO在存儲器中向上移動(向 地址0移動)。在讀指針rp超過(base—range)之后,移動FIFO。給 定最小的讀數(shù)據(jù)率,可計算將FIFO移到新位置所花費的時間。
如果令牌大于一個字,則也可根據(jù)指針wp和rp來計算FIFO中 的令牌個數(shù)。FIFO中的令牌個數(shù)與floor((wp-rp)/tokensize)相對應。例 如,讀取令牌中的數(shù)據(jù)字將改變指針rp,但是并不改變該等式的結(jié)果。 因此,產(chǎn)生方將知道,未釋放任何令牌,并且沒有額外空間變得可用。為了使片上存儲器的整體量盡可能地小,優(yōu)選地盡可能有效地執(zhí) 行所需數(shù)據(jù)的緩沖。這可通過給要處理的每個流提供緩沖器或FIFO 來實現(xiàn),其中該緩沖器必須能夠處理流的峰值帶寬需求??蛇x解決方 案是提供單個更大的共享緩沖器,代替多個較小的緩沖器??赏ㄟ^在 處理單元之間切換來執(zhí)行多個處理單元對緩沖器的訪問。然而,為了 (確實地)確保針對所有數(shù)據(jù)流的實時限制(對于音頻或視頻處理), 每個流必須能夠在任意時間訪問所需量的緩沖器空間。因此,可將緩 沖器空間或高速緩存器空間分配給分離的流。由于不同的數(shù)據(jù)流彼此獨立地工作,并且動態(tài)地將高速緩存器或 緩沖器空間分配或重新分配給不同的流,所以運行時間期間重新配置 不同流非常難,因為不會出現(xiàn)沒有任何有效流的單個時刻??蛇x地或附加地,可將緩沖器或高速緩存器分為用于基于流的周 期性處理的部分,并分為用于隨機訪問的部分,例如調(diào)試器。本發(fā)明的上述原理還可通過電子設備而不是數(shù)據(jù)處理系統(tǒng)來實現(xiàn)。應該注意,上述實施例示出而不是限制本發(fā)明,并且在不背離所 附權(quán)利要求的范圍的情況下,本領域的技術(shù)人員能夠設計多種可選實 施例。在權(quán)利要求中,置于括號之間的任何附圖標記均不應該被理解 為限制權(quán)利要求。單詞"包括"并不排除權(quán)利要求所列元素或步驟之 外的元素或步驟的存在。元素之前的單詞"一個"并不排除多個這種 元素的存在。在列舉了多個裝置的設備權(quán)利要求中,這些裝置中的一 些可由同一個硬件項目來實現(xiàn)。唯一的事實是,彼此不同的從屬權(quán)利 要求中的特定措施并不表示這些措施的組合不能夠產(chǎn)生有效效果。此外,權(quán)利要求中的任意附圖標記均不應該被理解為限制本發(fā)明 的范圍。
權(quán)利要求
1.一種基于流的通信環(huán)境中的數(shù)據(jù)處理系統(tǒng),包括-至少一個處理單元(PU1、PU2),用于對多個處理任務(j1-j5)進行基于流的處理;-存儲器裝置(MEM),具有地址范圍;-多個FIFO存儲器,所述多個FIFO存儲器分別映射到存儲器裝置(MEM)的地址范圍的一部分;其中,每個FIFO與所述多個處理任務(j1-j5)之一相關(guān)聯(lián),以便能夠進行通信;-地址轉(zhuǎn)換單元(ATU),用于識別存儲器裝置(MEM)中當前未由所述多個FIFO使用的地址范圍,并將至少一個FIFO的地址范圍移到存儲器裝置(MEM)中當前未使用的地址范圍。
2. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)處理系統(tǒng),其中 地址轉(zhuǎn)換單元(ATU)適用于將FIFO的地址范圍移到存儲器裝置(MEM)中鄰接更高或鄰接更低的當前未使用的地址范圍。
3. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理系統(tǒng),包括 與FIFO相關(guān)聯(lián)的讀指針(rp)和寫指針(wp),只要讀指針(rp)和寫指針(wp)達到FIFO的末端,則地址轉(zhuǎn)換單元(ATU)將每個指 針改變?yōu)樗频降牡刂贩秶?br> 4. 一種在基于流的通信環(huán)境中整理數(shù)據(jù)處理系統(tǒng)中的存儲器的 碎片的方法,該數(shù)據(jù)處理系統(tǒng)具有至少一個處理單元(PU1、 PU2), 用于對多個處理任務(jl-j5)進行基于流的處理;存儲器裝置(MEM), 具有地址范圍;以及多個FIFO存儲器,所述多個FIFO存儲器分別映射 到存儲器裝置(MEM)的地址范圍的一部分,所述方法包括步驟將每個FIFO與所述多個處理任務(jl-j5)之一相關(guān)聯(lián),以便能夠 進行通信;識別存儲器裝置(MEM)中當前未由所述多個FIFO使用的地址 范圍;將至少一個FIFO的地址范圍移到存儲器裝置(MEM)中當前未 使用的地址范圍。
5. —種在基于流的通信環(huán)境中的電子設備,包括_至少一個處理單元(PU1、 PU2),用于對多個處理任務(jl-j5)進行基于流的處理;-存儲器裝置(MEM),具有地址范圍;-多個FIFO存儲器,所述多個FIFO存儲器分別映射到存儲器裝置 (MEM)的地址范圍的一部分;其中每個FIFO與所述多個處理任務 (jl-j5)之一相關(guān)聯(lián),以便能夠進行通信;-地址轉(zhuǎn)換單元(ATU),用于識別存儲器裝置(MEM)中當前 未由所述多個FIFO使用的地址范圍,并將至少一個FIFO的地址范圍移 到存儲器裝置(MEM)中當前未使用的地址范圍。
全文摘要
在基于流的通信環(huán)境中提供了一種數(shù)據(jù)處理系統(tǒng)。該數(shù)據(jù)處理系統(tǒng)包括至少一個處理單元(PU1、PU2),用于對多個處理任務(j1-j5)進行基于流的處理;存儲器裝置(MEM),具有地址范圍;多個FIFO存儲器,所述多個FIFO存儲器分別映射到存儲器裝置(MEM)的地址范圍的一部分。每個FIFO與所述多個處理任務(j1-j5)之一相關(guān)聯(lián),以便能夠進行通信。提供了地址轉(zhuǎn)換單元(ATU),用于識別存儲器裝置(MEM)中當前未由所述多個FIFO使用的地址范圍,并將至少一個FIFO的地址范圍移到存儲器裝置(MEM)中當前未使用的地址范圍。
文檔編號G06F12/02GK101164049SQ200680003693
公開日2008年4月16日 申請日期2006年1月26日 優(yōu)先權(quán)日2005年1月31日
發(fā)明者馬克·J·G·貝庫依 申請人:Nxp股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1