涂哲
(美國波士頓大學)
基于TSV 的三維集成電路是應對摩爾定律失效問題的重要技術途徑之一,基于TSV 的三位集成電路主要應用于高密度芯片產(chǎn)品和異質(zhì)集成應用領域,存儲器類產(chǎn)品是典型的具有高密度的產(chǎn)品之一,因此基于TSV 的三維存儲器受到了廣泛重視。
然而,存儲器不可避免的存在各類故障,因此在三維存儲器中如何進行故障修復是一個對提高成品率具有重要作用的研究發(fā)現(xiàn)。鄰近層冗余資源共享策略在修復率方面優(yōu)于冗余資源層間全局共享和獨立層內(nèi)自修復[9]。
三維存儲器由多個存儲器裸片堆疊而成,每一個裸片在設計時會增加冗余行、冗余列資源,用于故障修復。通過合理匹配堆疊順序,即便某層裸片中的冗余資源不足以修復本層中的故障,也可通過借用鄰近層中的冗余資源達到故障修復的效果,從而使整體良率大幅提高,因此,裸片匹配技術具有重要研究價值。針對此問題學者們已經(jīng)給出了一些方案,比如說文獻[4]中Xu 等人提出了適用于兩層冗余共享結(jié)構的匹配方案,并有效提升了三維存儲器的成品率[4];文獻[3]中Lee 等人提出了全局冗余共享的方法,而TSV 的數(shù)量使用過多[3];文獻[1]中Zhu 等人則提出了鄰近層冗余資源共享的方案。比較后,因為鄰近層共享的高修復率,本文僅考慮鄰近層共享策略下的裸片匹配問題,在現(xiàn)有的鄰近層共享的方案中,只有Zhu等人的方案進行對比,雖然他們的方案在一定程度上提高了堆疊成品率,但在裸片的匹配策略上還有優(yōu)化的余地,所以本文希望提出一種新的高效的裸片匹配方法,進一步提高三維存儲器的成品率。
方案大概流程分為兩個階段,第一個階段為堆疊前測試存儲裸片的故障數(shù),并基于ESP 算法平衡使用行列冗余資源針對故障進行模擬修復得到各個芯片所需的行列冗余資源,第二階段開始堆疊,針對第一階段得到的數(shù)據(jù)進行合理堆疊,以此來充分利用裸片冗余及層間共享策略最大化成品率,其中主要的策略在于冗余資源與故障數(shù)的匹配。
在文獻[1]算法的基礎上,有更加優(yōu)化,更加效率的算法。文獻[1]的算法在第一階段的測試與識別中,并沒有詳述其測試過程,而本文在第一階段中講述了識別時使用的ESP 算法,并且添加了冗余資源與資源需求的自適應匹配,而在第二階段中,文獻[1]雖然最大化利用了故障數(shù)偏大的裸片進行堆疊來提高成品率,其代價則為較為嚴格的篩選條件淘汰掉了部分故障數(shù)偏大的裸片,而如果將故障較少的裸片與故障較多的裸片進行組合來進行鄰近資源共享則可以進一步拓寬裸片的選擇面,使得更多的裸片成功堆疊,并且本文的堆疊算法中同樣使用了冗余資源和資源需求的自適應匹配,使得冗余資源的利用率最大化,來進一步提升成品率。
2.2.1 堆疊前的測試與識別
假設每個裸片有行冗余RR,列冗余CR,存儲器堆疊層數(shù)為L,測試出裸片中所含的行列故障以及正交故障,并針對使用ESP 算法來進行所需冗余資源數(shù)的識別。
ESP 算法的實現(xiàn)在于,當我們通過測試得到每個裸片所包含的行列故障以及正交故障后,使用行列冗余資源對其進行模擬修復,此時可以得知相應資源所能針對模擬修復的行列故障及正交故障數(shù),接著對每個冗余資源模擬修復的故障數(shù)進行降序排列。
排序后,優(yōu)先使用修復故障數(shù)較多的冗余資源,模擬修復后由于部分故障已被修復,則需重新測試裸片得到新的排序,重復以上步驟直到所有故障被修復。
在模擬修復過程中,需要強調(diào)的是資源與故障數(shù)的自適應匹配,在遇到正交故障或可修復故障數(shù)相等時,判斷行冗余與列冗余使用數(shù)量,被使用數(shù)量較少的一方優(yōu)先用于修復正交故障;而當預設的行列冗余數(shù)不相等時,優(yōu)先使用預設冗余數(shù)較多的一方;算法結(jié)束后,得到修復裸片所需行冗余數(shù)量RF,列冗余數(shù)量CF,并得到每個裸片所修復的故障數(shù)F。
假設預先分配的冗余資源為4 個行冗余及4 個列冗余,在修復過程中,遇到了行列冗余都可修復三個故障的情況,而此時在之前的修復中已經(jīng)使用了2 個行冗余及1 個列冗余,因為列冗余使用較少,則優(yōu)先選擇使用列冗余進行修復;而若預設冗余資源為4 個行冗余及5 個列冗余,則類似情況下都優(yōu)先使用較多的列冗余資源進行修復,因為在整體的修復框架下,每一個裸片所富余的列冗余積累起來數(shù)量很大,因此優(yōu)先使用。ESP 算法流程圖如圖1所示。
圖1:ESP 算法流程圖
2.2.2 堆疊裸片
通過測試與識別得到每一個裸片修復所需行列冗余資源的數(shù)量后,接著就是進行裸片的堆疊。假設每個裸片都有RR 個行冗余以及CR 個列冗余,每個存儲器都有L 層,可供堆疊的裸片則有N 個,在ESP 算法中,重點強調(diào)的資源與故障匹配的思想在堆疊算法中也同樣適用,其主要作用在于當預設行列冗余不相等時,假設行冗余為3,列冗余為4,當其他條件相同時,則優(yōu)先考慮需要更多列冗余修復的裸片,或當預設冗余資源相等時,且其他條件相同時,優(yōu)先使用行列冗余數(shù)最為接近的裸片。
首先,需要拋棄所需資源數(shù)RF 和CF 大于存儲器中所有層數(shù)冗余資源數(shù)之和的裸片,即為RF>L*RR 或CF>L*CR 例如,存儲器為4 層,每層裸片分配2 個行冗余及2 個列冗余,當裸片的RF或CF>8 時,此裸片需要被直接拋棄。
接著降序排列剩余N 裸片的修復所需行列冗余資源數(shù)之和S,從排序中挑選出S 最大的裸片i,當有多個裸片S 相等且預設冗余相等時,優(yōu)先使用行列冗余數(shù)最接近的裸片,例如,一個裸片需要2 個行冗余及4 個列冗余進行修復,另一個裸片則需要3 個行冗余及3 個列冗余進行修復,兩片的所需資源數(shù)之和都為6,而第二片所需的行列冗余數(shù)更接近,則優(yōu)先選擇第二片進行堆疊,或當S 相等預設冗余資源不相等時,如行冗余比列冗余更多時,優(yōu)先匹配所需行冗余更多的裸片。以上做法的邏輯在于當S 相等且預設冗余相等時,由于預設行列冗余是相等的,則當進行匹配時,行列冗余數(shù)更接近的裸片成功修復的可能性更大,如果匹配的裸片所需的行列冗余數(shù)差距過大則容易導致后續(xù)修復時行或列冗余不足,而另一類型的冗余仍有富余的情況;而當S 相等預設行列冗余不相等時,則所有裸片積累的兩種類型的冗余資源數(shù)差距是極大的,則匹配時優(yōu)先選擇所需冗余類型更為富余的裸片進行匹配能最大化的利用該差距。
接著從排序的底端依次挑選出兩片故障最小值與i 進行匹配,需要強調(diào)的是,因為首層裸片僅能使用本層及一片鄰層裸片的冗余資源,則需要將所需資源較小的放置在存儲器的首層,而裸片i 次之,第三層再是另一片所需資源較小的裸片,選出兩片所需資源數(shù)為最小值的裸片后,分別得到兩個裸片所需行冗余及列冗余之和,分別為RS 和CS,而前三層堆疊時需要將行列冗余資源數(shù)進行分別處理,因為裸片i 所能使用的資源總值為3 層的冗余資源,如果裸片i 能完成修復則需要滿足條件
RF<=3*RR-RS
CF<=3*CR-CS
如果匹配成功,則繼續(xù)進行堆疊,并得到行列冗余使用數(shù)之和RS,CS;如果匹配失敗,則將裸片i 從排序中去除,再重新進行堆疊。
前三個裸片堆疊成功后,接下來的裸片i 為排序中所需資源數(shù)之和最大值,當i=L 時,因為前面的裸片已經(jīng)使用了RS 和CS 數(shù)值的冗余資源,并且i 為存儲器的最后一層,則該裸片能使用的冗余資源為本層及前面所剩余的,則該裸片需滿足的條件為:
RF<=RR*L-RS
CF<=CR*L-CS
若裸片i 不為存儲器最后一層,則該裸片可使用三層冗余資源,所以只需滿足條件:
RF<=RR*(i+1)-RS
CF<=CR*(i+1)-CS
同時,在其后添加排序中的最小值,并判斷其是否為存儲器最后一層,條件與前一層相同;重復以上一大一小的交替堆疊,直到存儲器完成堆疊。需要注意的是,為了使得冗余資源與故障數(shù)相匹配,當多個S 相等時,優(yōu)先選擇RF 與CF 數(shù)值最為接近的裸片,或當預設冗余資源不相等時,優(yōu)先選擇所需冗余資源預設更為富余的冗余類型。
當一個存儲器堆疊完成,即i=L 時,將相應裸片從排序中去除;若遍歷完所有裸片仍無法完成堆疊,則將此次堆疊中的所需資源數(shù)之和的最大值裸片從排序中刪除,并繼續(xù)進行堆疊;當進行新的堆疊時,排序中所剩裸片數(shù)量小于L 時,結(jié)束堆疊。堆疊算法流程圖如圖2所示。
圖2:堆疊算法流程圖
下面通過一個堆疊存儲器的例子來具體講述堆疊的過程:
表1為通過測試與修復得到的六片裸片所需行列冗余資源數(shù)的數(shù)值表,并且已經(jīng)按照資源數(shù)之和降序排列。假設存儲器每個需要四層裸片完成堆疊,且每層分配2 個行冗余及2 個列冗余,則六片中沒有需要直接拋棄的裸片;接著,挑選出其中的資源數(shù)和的最大值,即為A 和B 兩個裸片,此時,為了滿足自適應匹配原則,挑選行列冗余更加接近的B 裸片進行堆疊,再從最小值中挑選出E和F 進行匹配,匹配后發(fā)現(xiàn)滿足條件,則前三層堆疊完成;第四層挑選出最大值裸片A 進行堆疊,發(fā)現(xiàn)其RF 并不滿足堆疊條件,則繼續(xù)進行挑選,得到裸片C,而裸片C 滿足堆疊條件,并且其為存儲器最后一層,則E、B、F、C 裸片堆疊成為一個存儲器。
表1:堆疊示例表
本文算法在優(yōu)化存儲器堆疊成品率方面主要運用了鄰近層資源共享的策略,其優(yōu)勢在于使用了小于全局共享策略的TSV 數(shù)量,得到了略低于全局共享策略的成品率,因而大大降低了成本;同時,與結(jié)對共享相比,雖然TSV 數(shù)量增多,但成品率的提升卻是顯著的,并且由于鄰層共享的靈活性,使得資源的利用率得到了提高。
與相同策略的文獻[1]中的算法相比較,本文算法不僅優(yōu)化了ESP 算法,并且在堆疊算法中提出了用所需資源較少的優(yōu)質(zhì)裸片去幫助堆疊所需資源較多的裸片的策略,這種策略使得在挑選裸片的過程中有了較大的彈性,一部分所需資源較多的裸片也可以被挑選進行堆疊,因而大大提升了成品率;同時,在ESP算法和堆疊算法中,本文還提出了冗余資源與故障數(shù)自適應匹配的策略,即為平衡行列冗余資源的使用,以此來提升資源使用的合理性,也一并提高了堆疊時的成品率。
根據(jù)以上算法,進行了以1000 個256×256 的裸片為對象的成品率仿真實驗,仿真中針對故障分布服從常用的泊松分布,并使用的是均勻故障分布的模型,計算成品率的公式為 成品率=已修復的芯片數(shù)/總芯片數(shù) * 100%,最后取值為1000 次實驗的平均值,實驗結(jié)果如表2所示。
表2:實驗結(jié)果表
文獻[1]的算法過程簡單來說就是在得到所需行列冗余資源數(shù)后,對其和進行降序排列,并從排序中最大值開始堆疊裸片,并在之后的堆疊中,在滿足條件的同時,挑選排序中的最大值來進行堆疊。從仿真結(jié)果來看,本文算法在任何情況下與文獻[1]的算法相比都有著明顯的提升,并且當層數(shù)越高時,差距越明顯;算法的顯著提升歸功于其對于故障較多裸片與故障較少裸片的配對應用,使得更多的多故障裸片可以被投入使用,并且本文算法將冗余資源與所需資源數(shù)進行匹配使得成品率有了更明顯的提高,而本文算法在層數(shù)上升時的巨大提升推測是因為當層數(shù)只有4 層時,第四層所能滿足條件的裸片需要為所需資源數(shù)最大值且只能使用上一層與自身的資源,而當層數(shù)上升到6 層時,堆疊中可以增加一個所需資源數(shù)較少的裸片單位,而排序的底端通常都是所需冗余資源數(shù)為0 或幾乎為0 的裸片,則增加的冗余較少裸片對于存儲器中的資源提升是巨大的,大大增加了存儲器的堆疊成品率。
當故障均值為2 時,本文算法可以在RF 為2,CF 為2 時使得成品率接近100%,而冗余資源提升對成品率的提升也極為有限,而本文算法在RF 為2,CF 為2 時的成品率接近100%,因此當使用文中的算法時,若故障均值為2,算法的最佳冗余數(shù)為RF 為2,CF 為2;當故障均值為4 時,算法在RF 為2,CF 為3 時成品率即可達到接近100%,最佳冗余數(shù)是RF 為2,CF 為3 時。
比之傳統(tǒng)的鄰近冗余資源共享,算法對裸片的匹配進行了優(yōu)化,從而提升了成品率,在成品率提高的同時,其與其他如全局冗余共享或單獨鄰層冗余共享的優(yōu)勢在于,效率較高的同時大大降低了TSV 的使用面積,使得存儲器的大小成本進一步降低。
本文以鄰近層冗余資源共享為基礎,即存儲器中的裸片不僅可以使用本層的冗余資源進行修復,同時也可以使用鄰近層多余的冗余資源進行修復,提出了一種優(yōu)化三維存儲器堆疊成品率的方案,并且在對裸片進行修復的ESP 算法以及堆疊算法本身上進行了資源與故障數(shù)自適應匹配的處理。在堆疊算法中,通過以所需資源較少的裸片來幫助堆疊所需資源較多的裸片的方式,使得一部分本身無法進行堆疊的裸片可以進行堆疊,以此來提升堆疊成品率;而自適應匹配的處理則大大提升了資源的利用率,同時也改善了資源利用的合理性,使得成品率進一步提升。實驗結(jié)果表明,與使用相同策略的文獻[1]的算法相比,成品率有了顯著的提高,并且堆疊的層數(shù)越高,提升越為明顯。