TW201931357A - 記憶體之記憶胞元資料處理 - Google Patents

記憶體之記憶胞元資料處理 Download PDF

Info

Publication number
TW201931357A
TW201931357A TW107100237A TW107100237A TW201931357A TW 201931357 A TW201931357 A TW 201931357A TW 107100237 A TW107100237 A TW 107100237A TW 107100237 A TW107100237 A TW 107100237A TW 201931357 A TW201931357 A TW 201931357A
Authority
TW
Taiwan
Prior art keywords
value
values
memory cell
memory
code
Prior art date
Application number
TW107100237A
Other languages
English (en)
Inventor
麥克 古賽爾
湯瑪士 柯恩
Original Assignee
德商英飛凌科技股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 德商英飛凌科技股份有限公司 filed Critical 德商英飛凌科技股份有限公司
Priority to TW107100237A priority Critical patent/TW201931357A/zh
Publication of TW201931357A publication Critical patent/TW201931357A/zh

Links

Abstract

一種處理位元的方法,其特徵為將m 個要儲存的位元轉換成n 1 -,…,nK -aus-n -代碼的一個代碼字的n 個記憶胞元值;其中n 1 代表第一記憶胞元值的第一個數量,nK 代表第K 個記憶胞元值的第K 個數量;其中第一記憶胞元值具有第一個值,第K 個記憶胞元值具有第K 個值;其中K 值是彼此不同的;其中記憶胞元值的數量n 是由n =n 1 +…+nK 計算出來的。記憶胞元值儲存在一個記憶體內。特別是n 1 ≧1至nK ≧1;K ≧2及n ≧3及m ≧1。

Description

記憶體之記憶胞元資料處理
有多種不同的已知方法可將資料(例如二進制資料)儲存到記憶體之記憶胞元內,以及從記憶體的記憶胞元將資料讀出,以進行進一步的處理。
本發明的目的是改善與記憶體的作業往來,特別是提高儲存及/或讀出資料的效率。
採用具有本發明之獨立申請專利項目之特徵的方法即可達到上述目的。附屬申請專利項目之內容為本發明的各種有利的實施方式。
為了達到上述目的,本發明提出一種處理位元的方法,其具有以下的特徵: - 將m 個要儲存的位元轉換成n 1 -,…,nK -aus-n -代碼的一個代碼字的n 個記憶胞元值; - 其中n 1 代表第一記憶胞元值的第一個數量,nK 代表第K 個記憶胞元值的第K 個數量; - 其中第一記憶胞元值具有第一個值,第K 個記憶胞元值具有第K 個值; - 其中K 值是彼此不同的; - 其中記憶胞元值的數量n 是由n =n 1 +…+nK 計算出來的; - 記憶胞元值儲存在一個記憶體內。
特別是n 1 ≧1至nK ≧1;K ≧2及n ≧3及m ≧1。
確定n 1 -,…,nK -aus-n -代碼的方式是:n 1 個第一記憶胞元值具有第一個值,…,nK 個第K 個記憶胞元值具有第K 個值。當K =2,則第一及第二記憶胞元值各具有第一及第二個值。當K =3,則第一、第二及第三個記憶胞元值各具有第一、第二及第三個值。對任意一個K >3的值,這個規則可以一直繼續下去。
第一及第二個值都可以是數位值。
一種有利的情況是,記憶胞元值的第一個數量及記憶胞元值的第二個數量都不是0。
特別是m 個要儲存的位元可以一一對應的被轉換成n 個記憶胞元值。
m 個要儲存的位元也可以包含資料位元、位址位元或是從位址位元導出的位元。例如,這些m 個要儲存的位元可以包含檢驗位元或其他資料。例如檢驗位元可以用於錯誤辨識及/或錯誤修正。
根據一種改良方式,要儲存的位元都是二進制位元。
一種改良方式是使K =2,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -aus-n -代碼,而且要儲存的位元被轉換成n 1 -,n 2 -aus-n -代碼的一個代碼字的n 個記憶胞元值,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,其中第一個值不同於第二個值。
也可以將n 1 -,n 2 -aus-n -代碼稱為n 1 -aus-n -代碼。在這種情況下n 2 =n -n 1
一種改良方式是使K =3,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -,n 3 -aus-n -代碼,而且要儲存的位元被轉換成n 1 -,n 2 -,n 3 -aus-n -代碼的一個代碼字的n 個記憶胞元值,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,n 3 個第三個記憶胞元值具有彼此相同的第三個值,其中第一個值、第二個值以及第三個值都是彼此不同的值。
一種改良方式是將要儲存的位元集合成一個群組,並將複數個資料位元轉換成要儲存的位元的群組,並儲存起來。
根據一種改良方式,記憶體是一種可定址的記憶體。
根據一種改良方式,記憶胞元值的數量小於要儲存的位元數量的兩倍。
這種改良方式的優點是,要儲存m 個位元所需的記憶胞元的數量小於2m 個記憶胞元。由於是轉換成n 1 -, ...,nk -aus-n -編碼,因此在儲存時可以省下記憶體的記憶胞元。
根據一種改良方式,每一個記憶胞元儲存一個記憶胞元值。
根據一種改良方式,要儲存的位元包含一個錯誤代碼的資料位元及檢驗位元,其中檢驗位元是用於以錯誤代碼進行錯誤修正。
根據一種改良方式: - 對記憶胞元值而言,檢驗位元是由一個錯誤代碼決定; - 檢驗位元被轉換成n 1 -,…,nK -aus-n -代碼的至少一個代碼字,並被儲存在記憶體內。
根據一種改良方式,要儲存的位元包含錯誤代碼的一個代碼字的至少一個位元。
錯誤代碼是一種用於錯誤辨識及/或錯誤修正的代碼。
根據一種改良方式,要儲存的m 個位元包含記憶體位址的至少一個位址位元,或包含由記憶體位址的至少一個位址位元導出的位元。
根據一種改良方式,記憶體包含下列記憶體類型中的至少一種記憶體類型: - 快取記憶體, - 暫存器或暫存器陣列, - 快閃記憶體, - MRAM, - SRAM, - RE-RAM, - PC-RAM, - CB-RAM, - 多位元記憶體, - 多級記憶體。
根據一種改良方式: - 物理值是由n 個記憶胞元決定,其中n 至少是3; - 物理值至少有一部分被相互比較; - 根據相互比較的物理值將K 個不同的數位記憶胞元值配屬到n 個記憶胞元; 將一個n 1 -,…,nK -aus-n -代碼的一個代碼字配屬到按上述方式獲得的記憶胞元值。
特別是n ≧3,n 1 ≧1至nK ≧1;K ≧2及m ≧1。
n 個記憶胞元值,其中僅出現K 個不同的數位值。
此外:n 1 +…+nK =n
物理值的比較可以包含類比值的比較。
比較的方式可以是比較物理值本身,或是以物理值為基礎進行比較。特別是可以比較從物理值導出的值。此處提及之物理值的比較亦包括對涉及從物理值導出的值進行的比較。
因此,將數位值配屬於物理值的基礎是將從n 個記憶胞元決定的物理值相互比較,以此為基礎的比較只有很小的機率會導致數位值的配屬錯誤。只有在要比較的物理值位於其值之機率分佈的重疊區,而且在比較時物理值的排列順序發生改變的情況下,才有可能發生數位值的錯誤配屬。
根據一種改良方式: - 物理值至少有一部分被相互比較,由此決定物理值的排列順序; - 根據物理值的排列順序將K 個不同的數位記憶胞元值配屬到n 個記憶胞元。
這樣就可以為排列順序中的n 1 個第一記憶胞元值決定一個第一數位記憶胞元值,以及為排列順序中的nK 個最後的記憶胞元值決定一個第K 個數位記憶胞元值。
特別是可以根據物理值在排列順序中的位置,決定數位記憶胞元值的配屬。
如果是為排列順序中的n 1 個第一記憶胞元決定一個第一數位記憶胞元值,而且n 1 ≧2,則可以不必確定n 1 個第一記憶胞元的排列順序。在這種情況下,只需確定一個記憶胞元是屬於n 1 個第一記憶胞元即可,無需確定這個記憶胞元在n 1 個第一記憶胞元的排列順序中的位置。例如,可以將相同的數位值1配屬到所有n 1 個第一記憶胞元。
接下來一直到nK 個第K 個記憶胞元亦適用以上描述的規則。也就是說只需一個部分確定的排列順序即可,或是只需確定一部分的記憶胞元值的排列順序即可。
一種改良方式是讀出n 個記憶胞元,以確定物理值。
一種改良方式是使所有的物理值相互比較。
一種改良方式是使K =2,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -aus-n -代碼,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,其中第一個值不同於第二個值。
也可以將n 1 -,n 2 -aus-n -代碼稱為n 1 -aus-n -代碼。在這種情況下n 2 =n -n 1
一種改良方式是使K =3,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -,n 3 -aus-n -代碼,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,n 3 個第三個記憶胞元值具有彼此相同的第三個值,其中第一個值、第二個值以及第三個值都是彼此不同的值。
一種改良方式是使K >3。
在這個例子中,每一個記憶胞元可以決定3個以上的值,也就是3個以上的數位記憶胞元值。
根據一種改良方式,記憶胞元決定的記憶胞元值是透過一一對應的轉換決定。
記憶胞元值的數量n 較佳是小於儲存在記憶胞元內的位元數量的兩倍。
根據一種改良方式,物理值是時間點。
一種改良方式是利用記憶胞元之物理值的時間積分決定時間點。
根據一種改良方式,物理值是記憶胞元的一個讀出流。
根據一種改良方式,如果所獲得的數位記憶胞元值是描述n 1 -,…,nK -aus-n -代碼的一個代碼字,則可以透過反轉換從代碼字決定m 個位元。
根據一種改良方式,利用錯誤代碼對m 個位元進行錯誤辨識及/或錯誤修正。
一種改良方式是利用檢驗位元進行錯誤辨識及/或錯誤修正,其中係根據源自資料位元的錯誤代碼決定檢驗位元。
一種改良方式是利用檢驗位元進行錯誤辨識及/或錯誤修正,其中係根據源自記憶胞元值的錯誤代碼決定檢驗位元。
根據一種改良方式,錯誤代碼是一個位元組錯誤修正代碼及/或位元組錯誤辨識代碼。
根據一種改良方式,如果是以資料位元進行錯誤修正,則一個位元組含有m 個位元,如果是以記憶胞元進行錯誤修正,則一個位元組含有n 個位元。
根據一種改良方式,錯誤代碼是一個位元錯誤修正代碼及/或位元錯誤辨識代碼。
一種改良方式是使用至少一個參考值以決定數位記憶胞元值。
此外,為了達到本發明的目的,本發明還提出一種資料處理裝置,此裝置具有一個處理單元,其作用是: - 將m 個要儲存的位元轉換成n 1 -,…,nK -aus-n -代碼的一個代碼字的n 個記憶胞元值; - 其中n 1 代表第一記憶胞元值的第一個數量,nK 代表第K 個記憶胞元值的第K 個數量; - 其中第一記憶胞元值具有第一個值,第K 個記憶胞元值具有第K 個值; - 其中K 值是彼此不同的; - 其中記憶胞元值的數量n 是由n =n 1 +…+nK 計算出來的; - 將記憶胞元值儲存在一個記憶體內。
此處所稱之處理單元可以是一個處理器單元,及/或至少是部分硬體連線的電路佈置或是一個邏輯電路佈置,其作用是按上述方式執行本發明的方法。此處提及的處理單元可以是或包含具有必要之周邊設備(記憶體、輸入/輸出介面、輸出裝置…等)的任何一種處理器、計算機或電腦。
以上關於本發明之方法的說明亦適用於這種裝置。可以將這種裝置製作成一個組件,或是分散到多個組件。
也可以利用包含至少一個這種裝置的系統達到本發明的目的。
根據一種改良方式,處理單元的作用是: - 根據n 個記憶胞元決定物理值,其中n 至少是3; - 使至少一部分物理值相互比較; - 根據相互比較的物理值將K 個不同的數位記憶胞元值配屬到n 個記憶胞元; - 將一個n 1 -,…,nK -aus-n -代碼的一個代碼字配屬到按上述方式獲得的記憶胞元值。
根據一種改良方式,處理單元的作用是: - 使至少一部分物理值相互比較,由此決定至少一部分物理值的排列順序; - 根據物理值的排列順序將K 個不同的數位記憶胞元值配屬到n 個記憶胞元。
此外,本發明還提出一種可以直接存在數位電腦的記憶體內的電腦程式產品,此種電腦程式產品包含可以執行本發明之方法的各個步驟的程式碼。
本發明還提出一種電腦可讀的儲存媒介,其包含電腦可執行的指示,以使電腦執行本發明之方法的各個步驟。
記憶胞元可以有不同的不同物理值或相當於不同的數位值的狀態。
記憶胞元S 的物理量G 的值稱為WG ,記憶胞元S 的數位值稱為WD
數位值WD 可以是一個二進制的值,也就是能夠以兩個值(0及1)表示的值。一個數位值可以說是由有限數量的值組成的值。
另一種可能性是,數位值WD 可以代表兩個以上的不同的值。例如,一個數位值代表3個不同的值,在這種情況下,這些不同的數位值能夠以0、1、2來表示。一般而言,一個數位值K (K ≧2)可以代表不同的值。這K 個不同的值能夠以0, 1,…,K -1來表示。如果一個記憶體含有能夠儲存兩個以上的數位記憶胞元值的記憶胞元,則此記憶體亦稱為多值記憶體或多級記億體。此種記憶體的記憶胞元亦稱為多值或多級記憶胞元。
同樣的,如果一個記憶體含有能夠儲存兩個數位值的記憶胞元,則可以將這種記憶體稱為二進制記憶體,以及將其記憶胞元稱為二進制記憶胞元。
從記憶胞元S 讀出的物理值稱為WA
例如,記憶胞元的物理值或狀態可以是一個電阻值。同樣的,二進制的兩個電阻值可以是不一樣的:例如較大的電阻值相當於數位值0,較小的電阻值相當於數位值1。另一個例子是較大的電阻值相當於數位值1,較小的電阻值相當於數位值0。
如果有兩個以上的數位值儲存在記憶胞元內,則可以按照階段分配(朝較大或較小的電阻的方向):例如最大的電阻相當於數位值0,第二大的電阻相當於數位值1,第三大的電阻相當於數位值2…等,到最後是最小的電阻相當於數位值K -1(這表示有K 個數位值可以儲存在記憶胞元S 內)。
在讀出一個記憶胞元S 時會決定一個類比物理值WA ,這個物理值WA 取決於物理值WG ,其中物理值WG 是在寫入/儲存數位值WD 時產生的。
在沒有出錯的情況下,可以從讀出的物理值WA 決定相應的數位值WD
如果不同的電阻值相當於不同的記憶胞元S 的不同的狀態,例如MRAM就是一個例子,則儲存的物理值WG 是一個電阻值,同時讀出的物理值WA 可以是一個電流或電壓。
例如,在讀出記憶胞元時,可以利用至少一個參考值R ,這個參考值R 對所有或大部分讀出的記憶胞元是一樣的。也可以選擇性的使(至少一個)參考值(全部或部分)位於外部供使用。從記憶胞元讀出的值WA 可以與參考值R 比較。
以下將以能夠儲存兩個不同的數位值(0及1)的二進制記憶胞元為例說明。當然以下的說明亦適用於能夠儲存兩個以上的數位值的記憶胞元。
如果較大的電阻值相當於二進制值0,較常的電阻值相當於二進制值1,則讀出的較小的電流值WA 相當於數位值0,讀出的較大的電流值WA 相當於數位值1。
與此相應的,另一種選擇是,從記憶胞元讀出的值WA 是一個電壓,這個電壓的大小取決於先前寫入記憶胞元的是二進制值0或二進制值1。
如果是將讀出值WA 與一唯一相應的參考值R 作一比較,以決定數位值WD ,則數位值WD 適用下式:
如果在多個記憶胞元內寫入數位值0,則一個可能的例子是,由於統計起伏(例如製造時的過程起伏)的關係,這些記憶胞元具有不同的物理值WG ,在沒有出錯的情況下,所有的這些物理值均相當於數位值WD =0,而且能夠以一個機率分佈描述這些物理值。與此相應的,根據機率分佈,讀出值WA 是不同的值。
同樣的,以上的說明亦適用於被寫入一個數位值1或另一個值的記憶胞元:如果在多個記憶胞元內寫入數位值1,則一個可能的例子是,由於統計起伏(例如製造時的過程起伏)的關係,這些記憶胞元具有不同的物理值WG ,在沒有出錯的情況下,所有的這些物理值均相當於數位值WD =1,而且能夠以一個機率分佈描述這些物理值。與此相應的,根據機率分佈,讀出值WA 是不同的值。
如果可以在一個記憶胞元內儲存一個以上的位元,則以下的說明亦適用於所有的能夠被儲存在記憶胞元內的數位值。
1a 顯示相當於數位值1的讀出值WA (1)的機率分佈101,以及相當於數位值0的讀出值WA (0)的機率分佈102。在x 軸上標示的是不同的讀出值WA ,在y 軸上標示的是讀出值WA 的機率。此外,有一個位於機率分佈101及102之間的參考值R
在第1a圖的例子中,機率分佈101及102沒有任何重疊。這表示二進制值0及1的配屬沒有任何錯誤。換句話說,在沒有讀出錯誤的情況下,根據參考值R 可以明確且沒有任何錯誤的將讀出值WA 配屬到二進制值0或1。
為簡化起見,這個例子是假設幅射或加熱造成的影響不會導致配屬錯誤。
1b 顯示相當於數位值1的讀出值WA (1)的機率分佈103,以及相當於數位值0的讀出值WA (0)的機率分佈104。同樣的,有一個位於機率分佈103及104之間的參考值R
與第1a圖顯示的機率分佈101及102不同的是,機率分佈103及104有部分區重疊。例如,MRAM記憶胞元可能會出現這種重疊。第1b圖顯示一個重疊區105,這個重疊區也稱為[0,1] A
如果將二進制值0配屬到讀出值WA ,且WA R ,以及將二進制值1配屬到讀出值WA ,且WA R ,則在讀出值WA 位於重疊區105的情況下,這個配屬可能會出錯。
此外,輻射或加熱造成的影響,或永久錯誤也可能導致配屬錯誤。
由於存在一重疊區105及使用參考值R 的關係,有相當大的機率會出錯配屬錯誤:如果一個相當於二進制值0的讀出值WA 位於重疊區105,此時大約有一半的機率是WA R ,因此可能導致配屬錯誤。同樣的:如果一個相當於二進制值1的讀出值WA 位於重疊區105,此時大約有一半的機率是WA R ,因此也可能導致配屬錯誤。
因此在讀出值WA 位於重疊區105的情況下,數位值的配屬可能會發生錯誤。區106顯示雖然一部分的讀出值WA 應被配屬到二進制值0,但是卻被錯誤的配屬到二進制值1。因此發生數位值配屬錯誤的機率主要是由讀出值WA 位於重疊區105的機率決定。特別是在重疊區相當大的情況下會是一個很大的缺點,例如現代科技就可能出現這種情況。
可以利用兩個記憶胞元S 1S 2 儲存一個可以是0及1的二進制值x 。例如可以為x =0將一個0存入記憶胞元S 1 ,以及將一個1寫入(存入)記憶胞元S 2 ;為x =1將一個1存入記憶胞元S 1 ,以及將一個0寫入(存入)記憶胞元S 2 。同樣的,也可以是反過來為x =0將一個1存入記憶胞元S 1 ,以及將一個0寫入(存入)記憶胞元S 2 ;為x =1將一個0存入記憶胞元S 1 ,以及將一個1寫入(存入)記憶胞元S 2
例如,可以用一個比較器將從兩個記憶胞元S 1S 2 讀出的(物理)值相互比較,以確定在沒有出錯的情況下,儲存的值是0或1。
例如,從記憶胞元S 1 讀出物理值WA 1 ,以及從記憶胞元S 2 讀出物理值WA 2 。如果WA 1WA 2 ,則表示二進制值x =0被存入兩個記憶胞元S 1S 2 。如果WA 1WA 2 ,則表示二進制值x =1被存入兩個記憶胞元S 1S 2
在這個例子中,被存入兩個記憶胞元S 1S 2 的讀出值WA 1WA 2 是彼此相互比較,而不是與參考值比較。使讀出值彼此相互比較可以大幅降低出現錯誤的機率。
只有在記憶胞元S 1 的讀出值WA 1 及記憶胞元S 2 的讀出值WA 2 均位於重疊區機率分佈WA (0)及WA (1)的情況下,才可能出現錯誤。發生這種情況的機率遠小於兩個讀出值中只有一個讀出值位於重疊區的機率。
反之,如果將從記憶胞元的讀出值與一參考值比較,而且這個讀出值位於相應之機率分佈的重疊區,則可能發生錯誤。
因此有一個缺點是每一個要儲存的位元需要兩個記憶胞元,也就是說儲存n 位元需要2n 個記憶胞元。
這個例子的一個優點是能夠利用盡可能少的記憶胞元儲存數位值,而且可靠性很高。另一個優點是,在儲存時還可以額外使用一個錯誤代碼,這樣至少可以辨識及/或修正一部分的讀出錯誤。將資料位元轉換成記憶胞元值
例如將k 個位元的2 k 個可能的佔用轉換成n 個記憶胞元值。記憶胞元值被儲存到n 個記憶胞元內,例如被儲存到一可定址記憶體的記憶胞元內。
可以從n 個記憶胞元讀出存在n 個記憶胞元內的n 個記憶胞元值,而且在沒有錯誤的情況下,可以將讀出的n 個記憶胞元值轉換回k 個資料位元。
記憶胞元值可以是二進制值(例如0及1)。在這種情況下,二進制值被儲存在記憶體的記憶胞元內。因此可以將這些記憶胞元稱為二進制記憶胞元。
另一種可能性是,每一個記憶胞元值K 都可以是不同的值。不同於二進制記憶胞元,此處的每一個記憶胞元值都可以有兩個以上的值。因此:K >2,其中K 個記憶胞元值是0, 1,...,K -1。例如,如果是有3個值的記憶胞元,則其可以儲存相應的3個值的記憶胞元值,因此將0、1或2配屬到每一個記憶胞元值。
另一種可能性是,i 個記憶胞元能夠儲存不同的Ki 值(二進制或多值,也就是說Ki ≧2)。例如可以設置至少兩個記憶胞元,其中一個記憶胞元儲存K 1 值,另一個記憶胞元儲存K 2 值,而且K 1K 2二進制記憶胞元值
首先考量記憶胞元值是二制的情況。
要將k 個資料位元x 1 ,...,xk 轉換成n 個不同的記憶胞元值z 1 ,...,zn ,並儲存到n 個記憶胞元內。
例如透過一個組合電路(也稱為轉換電路)將k 個資料位元x 1 ,...,xk 的2 k 個可能的佔用轉換成記憶胞元值。轉換電路的作用是將k 個資料位元的2 k 個佔用轉換成n 個記憶胞元值。
這個轉換的實現方式是使資料位元轉換成的記憶胞元值成為n 1 -aus-n-代碼的代碼字。n 1 -aus-n-代碼的代碼字具有n 1 個第一二進制值及n 2 =n -n 1 個第二二進制值。如果第一二進制值是1,第二二進制值是0,則n 1 -aus-n-代碼的代碼字具有n 1 個1及n 2 =n -n 1 個0。
同樣的,另一種可能性是第一二進制值是0,第二二進制值是1。
將資料位元儲存為n 1 -aus-n-代碼的代碼字是有利的,例如讀出儲存在記憶胞元內的n 1 -aus-n-代碼的代碼字可以達到比讀出未經編碼儲存的資料位元更高的可靠性。
也可以將n 1 -aus-n-代碼稱為n 1 -,n 2 -aus-n-代碼,其中n 1 是第一二進制值的數量,n 2 是第二二進制值的數量。因此n 2 =n -n 1 。從這個名稱可以看出,每一個代碼字都包含兩個不同的值(此處是二進制)0及1。
下式成立:
例如,記憶胞元值的數量n 可以是大於或等於3。
如果記憶胞元值的數量等於2(也就是說n =2),則相應之1-aus-2-代碼的代碼字是10及01。例如,可以將二進制值0編碼為10,以及將二進制值0編碼為01。這樣做的缺點是需要n =2個記憶胞元才能儲存一個單一位元的資料。
如前面所述,有k 個資料位元的2 k 個不同的佔用。此外還有n 1 -aus-n-代碼的個不同的代碼字。
可以一一對應的將k 個資料位元的2 k 個不同的佔用轉換成n 1 -aus-n-代碼的個代碼字,因此也可以根據一個代碼字明確的轉換回資料位元的相應的佔用,但前提是資料位元的佔用配屬於這個代碼字。
不同的代碼字的數量至少等於資料位元的佔用數量,也就是說滿足的條件,因此可以將k 個資料位元的所有佔用一一對應的轉換成n 1 -aus-n-代碼的代碼字。
另一種可能性是,根據應用情況k 個資料位元所有可能的2 k 個佔用並非全部出現。如果是這種應用情況,而且實際上出現的佔用數量Anz <2 k ,則只需滿足的條件,就可以一一對應的將代碼字配屬到實際出現的佔用。
這樣做的優點是只需少於2k 個記憶胞元就可以儲存k 個資料位元。二進制記憶胞元值:範例
例如有k =4個資料位元,因此有2 k =24 =16個不同的佔用。如果有n =6個記憶胞元(n 是記憶胞元值的數量,其中每一個記憶胞元值都應該儲存在一個記憶胞元內),而且n 1 =3,則一個3-aus-6-代碼有個不同的代碼字,其中每一個代碼字都有3個1及3個0。因此可以將4個資料位元的16個不同的佔用轉換成3-aus-6-代碼的16個選出的代碼字(總共有20個代碼字),並儲存到記憶體的6個記憶胞元內。
如果有n =6個記憶胞元值,而且n 1 =2,則一個2-aus-6-代碼只有個不同的代碼字,其中每一個代碼字都有2個1及4個0。因此4個資料位元的24 =16個佔用不可能一一對應的轉換成2-aus-6-代碼的代碼字。
例如,如果實際出現的佔用數量Anz 小於或等於15,則也可以使用這個2-aus-6-代碼。二進制記憶胞元值:資料位元的分組
以下將說明如何將N 個資料位元轉換成記憶胞元值,其中N =Mk ,而且M 大於1。因此k 個資料位元的每一個資料位元都可以分成M 個分組,其中k 個資料位元的每一分組的2 k 個佔用被一一對應的轉換成一個代碼的2 k 個代碼字。
如果將k 個資料位元的M 個分組的佔用轉換成相同的n 1 -aus-n-代碼的代碼字,則會產生Mn 個記憶胞元值,這些記憶胞元值可以相應的被儲存在Mn 個記憶胞元內。
例如此種情況是M 個分組包含k 個資料位元。另一種可能性是,資料位元的第一分組包含k 1 個資料位元、資料位元的第二分組包含k 2 個資料位元、…、資料位元的第M 分組包含km 個資料位元。每個分組的資料位元的數量k 1 ,k 2 ,…,km 至少有一部分是可以不一樣的。因此下式成立:N =k 1 +k 2 +…+kM , 其中: - 第一分組的k 1 個資料位元可以被轉換成第一個的代碼字; - 第二分組的k 2 個資料位元可以被轉換成第二個的代碼字; . . . - 第M 分組的kM 個資料位元可以被轉換成第M的代碼字 其中各個代碼可以至少有一部分是不一樣的。如果每個分組具有相同數量的資料位元,則也可以選擇性的使用不同的代碼。
例如,如果資料位元的數量k =3,則會產生3個資料位元的2 k =8個可能的佔用。對n =5個記憶胞元值而言,可以應用2-aus-5-代碼及3-aus-5-代碼,因為這兩個代碼各有10個代碼字,因此能夠提供比可能的佔用更多數量的代碼字。例如,2-aus-5-代碼可以應用於3個資料位元的第一分組,3-aus-5-代碼可以應用於3個資料位元的第二分組。
另一種選擇是,資料位元的分組並非都具有相同數量(k )的資料位元。例如,要將23個資料位元轉換成個記憶胞元值:23個資料位元可以構成5個各包含4個資料位元的分組,以及一個包含3個資料位元的分組。例如,包含4個資料位元的分組的24 =16個可能的佔用可以被轉換成3-aus-6-代碼(具有20個不同的代碼字)的代碼字。剩下的包含3個資料位元的分組有23 =8個可能的佔用。例如,這3個資料位元可以被轉換成3-aus-5-代碼(具有10個不同的代碼字)的代碼字。這樣所需的記憶胞元的數量會比3個資料位元的23 =8個可能的佔用也被轉換成3-aus-6-代碼的代碼字作法少一個。另一種可能性是,將3個資料位元的分組加上一個不變的位元(例如0),因而成為4個資料位元的分組,這樣所有的分組都包含相同數量的資料位元,因此可以應用相同的轉換。這樣做的優點是可以減輕電路設計的工作。多值記憶胞元值
接著要討論的情況是記憶胞元值可以有兩個以上的不同的值,同時記憶胞元能夠相應的儲存多值記憶胞元值。
一個記憶胞元要能夠儲存K 個不同的記憶胞元值,其中K >2(K =2是二進制記憶胞元值的特殊情況)。每一個記憶胞元的不同的記憶胞元值可以記為0, 1,…,K -1。
同樣是要儲存k 個資料位元。k 個資料位元的2 k 個不同的佔用能夠一一對應的被轉換成n 個記憶胞元值。n 個記憶胞元值包含:- n 1 個第一個值,- n 2 個第二個值,. . .nK 個第K 個值 例如可以是:- 第一個值是0,- 第二個值是1, . . .-K 個值是K -1。
也可以將n 個記憶胞元值記為記憶胞元值的一個n -資料組。可以將n 個多值(此處為K 值)記憶胞元值的n -資料組記為n 1 -,n 2 ,…,nK -aus-n -代碼的一個代碼字,其中該等記憶胞元質包含n 1 個第一個值、n 2 個第二個值、…、nK 個第K 個值。
n 1 -,n 2 ,…,nK -aus-n -代碼具有下列數量的代碼字:
接著將k 個資料位元的2 k 個佔用一一對應的轉換成n 1 -,n 2 ,…,nK -aus-n -代碼的這些代碼字,但是需要滿足這個條件:,或是滿足這個條件:,其中Anz 代表k 個位元實際出現的佔用數量(Anz <2 k ),這和前面描述的二進制記憶胞元值是一樣的。多值記憶胞元值:範例
要儲存k =6個資料位元。6個資料位元有2 k =26 =64個可能的佔用。如前面所述,這些資料位元是二進制值,並且要先經過轉換才會被存入多值記憶胞元。
此處以3值記憶胞元值(K =3)的情況為例。每一個記憶胞元可以儲存3個不同的值。總共有n =6個記憶胞元值(因此有6個記憶胞元),並假設n 1 =n 2 =n 3 =2。此處使用的2-,2-,2-aus-6-代碼有個不同的代碼字。這90個代碼字足供6個資料位元的26 =64個可能的佔用使用。
相較於二進制記憶胞元,多值記憶胞元的使用效率更高,因為一個多值記憶胞元可以儲存兩個以上的值。因此只需較少數量的物理性記憶胞元:在本例中,只需6個3值記憶胞元就可以形成2-,2-,2-aus-6-代碼的90個代碼字,而6個二進制記憶胞元僅能形成3-aus-6-代碼的20個代碼字。
在2-,2-,2-aus-6-代碼的每一個代碼字內,0、1及2會各出現兩次。例如代碼字:001122、101220、021210。
另一個例子是為3值記憶胞元值(K =3)使用一個1-,1-,1-aus-3-代碼。這個代碼為n =3個記憶胞元包含個代碼字012、021、102、120、201、210。如果要儲存k =2個資料位元,則可以將22 =4不同的佔用作為1-,1-,1-aus-3-代碼儲存到3個記憶胞元內。
另一個例子是4值記憶胞元值K =4。例如每一個記憶胞元都可以儲存0、1、2或3等4個值中的一個值。這個例子共有n =6個記憶胞元,並假設n 1 =n 2 =2及n 3 =n 4 =1。因此一個2-,2-,1-,1-aus-6-代碼包含個不同的代碼字。利用這180個代碼字可以將包含27 =128個可能的佔用的7個資料位元儲存到6個4值記憶胞元內。
此處使用之2-,2-,1-,1-aus-6-代碼的代碼字的例子:001123、101320、031210。每一個代碼字都有兩個0、兩個1、一個2以及一個3。多值記憶胞元值:資料位元的分組
此處討論的同樣是將N 個資料位元轉換成記憶胞元值,其中N =M k ,而且M 大於1。因此k 個數值位元可以形成M 個分組,其中k 個資料位元的每一個分組的2 k 個佔用被一一對應的轉換成n 1 -,n 2 -,…,nK -aus-n -代碼的2 k 個代碼字。
如果k 個資料位元的M 個分組的佔用被轉換成n 1 -,n 2 -,…,nK -aus-n -代碼的代碼字,則會產生M nK 值記憶胞元值,這些記憶胞元值被相應的儲存到M nK 值記憶胞元內。
一種有利的方式是以相同的轉換將k 個資料位元的所有分組的佔用轉換成記憶胞元值。例如這樣做的一個優點是可以多次使用同一個轉換電路。另一種可能性是以不同的轉換將不同分組的k 個資料位元轉換成記憶胞元值。寫入及讀出資料位元
k 個要儲存的位元也稱為資料位元。例如,這些資料位元可以包含一可分離的錯誤辨識及/或錯誤修正代碼的資訊位元及檢驗位元。在可分離的代碼內可以為資料位元補充檢驗位元。另一種可能性是資料位元是一不能分離的代碼的位元,這個代碼的代碼字的位元不能分成資訊位元及檢驗位元。還有一種可能性是,資料位元包含資訊位元及位址位元及/或從位址位元導出的位元及/或密碼的位元。
“資料位元”這個名稱的一個用途是用來稱呼要儲存到記憶體的位元。例如資料位元可以是被轉換成記憶胞元值,並被儲存到記憶胞元內的程式碼、圖像資料、測量資料或其他有效資料(負荷量)。記憶胞元值可以是多值或二進制的值。
讀取記憶胞元是透過比較從n 個記憶胞元輸出的物理值決定儲存在記憶胞元內的數位記憶胞元值。另一種可能性是比較從輸出的物理值導出的值。
如果n 個記憶胞元是二進制,則k 個要儲存的位元的序列會被轉換成n 個二進制記憶胞元值的序列,此序列包含n 1 個第一個二進制值及n 2 個第二個二進制值。如果第一個二進制值是1,第二個二進制值是0,則k 個要儲存的位元的序列被轉換成n 1 -aus-n -代碼的一個代碼字,而且n 2 =n -n 1
nn 1 為已知,可以按下式決定K
如果記憶胞元不是二進制,而且是用於儲存K 值數位記憶胞元值,則K 個位元的序列會被轉換nK 值記憶胞元值的序列,其中記憶胞元值被儲存到n 個記憶胞元內。決定n 個記憶胞元值的序列的方式是,這個序列包含n 1 個(第一預定數量)第一個彼此相同的第一記憶胞元值、n 2 個(第二預定數量)第二個彼此相同的第二記憶胞元值、…、直到nK 個(第K 預定數量)第K 個彼此相同的第K 記憶胞元值。
其中:以及:
可以按下式決定K
如果一個K 值記憶胞元值的序列包含n 1 個(第一預定數量)第一個彼此相同的第一記憶胞元值、n 2 個(第二預定數量)第二個彼此相同的第二記憶胞元值、…、直到nK 個(第K 預定數量)第K 個彼此相同的第K 記憶胞元值,則可以將此序列稱為(n 1 -,n 2 -,…,nK -aus-n )-代碼的代碼字。
讀取記憶胞元是透過比較從記憶胞元分組讀出的物理值決定儲存在含有n 個記憶胞元之記憶胞元分組內的數位資料。另一種可能性是透過比較讀出的物理值或導出的特性決定儲存在含有n 個記憶胞元之記憶胞元分組內的數位資料。
也可以將從不同的記憶胞元讀出的物理值的時間狀態視為特性,並拿來比較。
在時間點τ,一個從記憶胞元Si 讀出的值具有一類比值。例如,儲存在記憶胞元Si 的值是一個電阻,在時間點τ從記憶胞元Si 讀出的物理值是一個讀出電流(一種電流強度)。
如果記憶胞元Si 的電阻小於另一個記憶胞元Sj 的電阻,則讀出電流大於另一個記憶胞元Sj 的讀出電流,但前提是使用一預定(相同)的讀出電壓讀取這兩個記憶胞元。
如果利用一個電容C 將記憶胞元Sj 的讀出電流累積一段時間,則在一個時間點ti 達到一門限值Sw 。例如,此處從記憶胞元Si 讀出的物理值是讀出電流。例如,從讀出的物理值導出的值是時間點ti ,也就是將讀出電流累積達到預定的門限值Sw 的時間積分。
如果利用一個電容C 將記憶胞元Sj 的讀出電流累積一段時間,則在一個時間點tj 達到一門限值Sw
如果記憶胞元Si Sj 的讀出電流的關係如下:,則ti tj ,而且達到記憶胞元Si 的門限值Sw 的時間會早於達到記憶胞元Sj 的門限值Sw 的時間。
因此比較記憶胞元Si Sj 的一種方式是比較記憶胞元Si 累積的讀出電流達到門限值Sw 的時間是否早於Sj 累積的讀出電流達到門限值Sw 的時間。如在電壓相同的情況下,如果比較的結果確實如此,則電阻小於電阻
另一種選擇提根據記憶胞元Si Sj 儲存的物理值或此二者的狀態,決定記憶胞元Si Sj 的前後關係(或“順序”)。透過達到門限值Sw 的時間點ti tj ,可以根據記憶胞元Si Sj 儲存的電阻決定記憶胞元Si Sj 的順序,也就是說先是記憶胞元Si ,然後是記憶胞元Sj ,或是反過來。
可以利用這種方式決定n 個記憶胞元的分組的所有記憶胞元的順序。
例如,如果第一個n 1 個記憶胞元儲存的是一個二進制值0,第二個n 2 個記憶胞元儲存的是一個二進制值1,則在沒有錯誤的情況下,第一個n 1 個記憶胞元的電阻小於第二個n 2 個記憶胞元的電阻,因此第一個n 1 個記憶胞元的讀出電流大於第二個n 2 個記憶胞元的讀出電流。例如這個式子成立:n 1 +n 2 =n
與此相應的,第一個n 1 個記憶胞元達到門限值Sw 的時間點早於第二個n 2 個記憶胞元達到門限值Sw 的時間點
因此可以根據達到門限值Sw 的時間點決定記憶胞元的順序。例如,最早(第一個)時間點的記憶胞元是第一個記憶胞元,最晚(最後一個)時間點的記憶胞元是第n 個記憶胞元。在這個例子中,第一個n 1 個記憶胞元正好是儲存一個二進制值0的記憶胞元,剩下的n 2 個記憶胞元正好是儲存一個二進制值1的記憶胞元。
利用以下的積分式可以根據讀出電流(i =1,…,n )計算出n 個記憶胞元(S 1Sn )在時間點t達到的電壓vi (t )。
可以將電壓vi (t )與門限值Sw 作一比較。這樣就可以確定積分達門限值Sw 到的時間點。所獲得的時間點可以相互比較。這樣就可以確定記憶胞元的狀態是否相當於一個二進制0或1。
可以利用下式確定時間點ti vi (t )<Swtti vi (t )>Swtti ,其中假定讀出電流始終保持不變。
可以經由讀出電流或讀出電流的時間積分比較記憶胞元的電阻值或狀態。第一個n 1 個記憶胞元內的電阻值的起伏較佳是不會影響二進制值0在這些記憶胞元內的順序,但前提是這些電阻值不大於第二個n 2 個記憶胞元的一個電阻值。同樣的,第二個n 2 個記憶胞元內的電阻值的起伏較佳是不會影響二進制值1在這些記憶胞元內的順序,但前提是這些電阻值不小於第一個n 1 個記憶胞元的一個電阻值。記憶胞元的子群
例如,並非一定需要決定n 個記憶胞元的分組中n 1 個具有相同的第一數位值的記憶胞元的順序,或是決定n 2 個具有相同的第二數位值的記憶胞元的順序。n 1 個具有第一數位值的記憶胞元構成第一子群,n 2 個具有第二數位值的記憶胞元構成第二子群。每一個子群都相當於n 個記憶胞元的分組的一部分。以下將以一個例子對子群做一更詳細的說明。
以兩個子群為例,其中子群的記憶胞元數量n 1n 2 的關係如下:n 1 +n 2 =n
在第一子群的n 1 個記憶胞元各寫入一個第一數位值,在第二子群的n 2 個記憶胞元各寫入一個第二數位值,其中第二數位值不同於第一數位值。
在從記憶胞元讀出物理值時的一個優點是不用決定第一子群的n 1 個記憶胞元之間的順序,因為些記憶胞元被寫入的是相同的數位值。
n =6個記憶胞元S 1 ,…,S 6 為例。記憶胞元S 1S 2S 3 是第一子群的n 1 =3個記憶胞元,記憶胞元S 4S 5S 6 是第二子群的n 2 =3個記憶胞元。第一子群的記憶胞元被寫入數位值0,第二子群的記憶胞元被寫入數位值1。
2a 顯示從記憶胞元S 1S 6 讀出的多個物理值、、、、及。例如物理值WA 是一個讀出電流。
2b 顯示多個時間點t 1t 6 ,其中每一個時間點tm 都相當於一個物理值是(m =1,…,6)。
因此可以透過相應之讀出電流的時間積分決定時間點t 1t 2t 3t 4t 5t 6 ,也就是各個讀出電流達到的一預定的門限值的時間積分。例如根據第2b圖:t 5t 4 > t 6t 2t 3t 1
只要確定對i =4,5,6及j =1,2,3時,下式成立:ti tj 就可以配屬儲存到記憶胞元S 1S 6 內的數位值0或1。這樣做的一個優點是不必確定時間點t 4t 5t 6 及時間點t 1t 2t 3 之間的區別。
因此一種可能性是,將第一數位值配屬給經過讀出電流的時間積分達到門限值Swn 1 個第一記憶胞元,以及將第二數位值配屬給剩下的記憶胞元。在這種情況下即足以確認任一個記憶胞元是否屬於該n 1 個第一記憶胞元。
另一種可能性是形成記憶胞元之類比信號的邏輯連接,並根據這些邏輯連接確認記憶胞元是否被配屬到第一數位值或第二數位值。
n 個記憶胞元的分組及n 1 個第一記憶胞元而言,有個不同的可能方式將n 1 個0及n 2 =n -n 1 個1寫入n 個記憶胞元。因此在n 個記憶胞元內可以有個不同的佔用(也稱為狀態),也就是可以將K 個資料位元(也稱為一個K 位元組)儲存到n 個記憶胞元內,但前提是下式成立:如果n 是一個整數,則在n 1 =n /2的情況下,可以產生最多數量的可能狀態。
例如,n =6個記憶胞元,並分為n 1 =n 2 =3個第一及第二記憶胞元。n =6個記憶胞元構成一個包含記憶胞元S 1S 6 的記憶胞元分組,且其內可以儲存3-aus-6-代碼的一個代碼字。
首先要描述的情況是沒有出現任何錯誤的情況。讀取記憶胞元時會比較時間點t 1t 6 ,也就是比較讀出電流的積分值達到門限值Sw 的時間點。
例如,如果下式成立:t 1t 3 < t 4t 2t 5t 6 , 則記憶胞元的順序為S 1S 3S 4S 2S 5S 6
例如3-aus-6-代碼的代碼字101100被儲存在記憶胞元S 1S 6 內,並將該代碼字從記憶胞元讀出。在上述順序排列的記記憶胞元中,前面3個記憶胞元S 1S 3S 4 的讀出值是1,後面3個記憶胞元S 2S 5S 6 的讀出值是0。
但是如果下式成立:, 則記憶胞元的順序為S 3S 4S 1S 2S 6S 5
從記憶胞元S 1S 6 讀出的是3-aus-6-代碼的相同的代碼字101100。也就是說,調換儲存二進制值1的記憶胞元S 1S 3S 4 的順序,或是儲存二進制值0的記憶胞元S 2S 5S 6 的順序,並不會對讀出的3-aus-6-代碼的代碼字造成影響。
這個特性是有利的,因為讀出之物理值(相當於相同的數位值)的小幅起伏,在讀取時不會對配屬到的數位值造成影響。
在這個例子中,記憶胞元S 1S 3S 4 是用於儲存數位值1。代表數位值1的值、、分別被寫入這3個記憶胞元。這3個值、、彼此差異很小,但仍可能因偶然的影響而略微改變。
同樣的,記憶胞元S 2S 5S 6 是用於儲存數位值0。代表數位值0的值分別被寫入這3個記憶胞元。這3個值彼此差異很小,但仍可能因偶然的影響而略微改變。
例如,如果將時間順序:t 1t 3 < t 4t 2t 5t 6 改為時間順序:記憶胞的順序如下:S 1S 3S 2S 4S 5S 6 並從記憶胞元S 1S 6 讀出3-aus-6-代碼的代碼字111000,這個代碼字與無錯誤的代碼字101100的區別是,時間上最先的記憶胞元S 2 (在沒有錯誤的情況下,其在記憶胞元順序中的值為0)及時間上最後的記憶胞元S 4 (在沒有錯誤的情況下,其在記憶胞元順序中的值為1)被調換。範例: 3 值記憶胞元
這個例子的情況是每一個記憶胞元可以儲存3個不同的數位值0、1及2。
3 顯示記憶胞元之物理值WG 的機率分佈。
第3圖顯示儲存值0的機率分佈301、儲存值1的機率分佈302及儲存值2的機率分佈303。機率分佈301也稱為WG (0),機率分佈302也稱為WG (1),機率分佈303也稱為WG (2)。
機率分佈301及302有一個重疊區304,機率分佈302及303有一個重疊區305。
根據一個實施例,物理值可以是一個電阻。
4 顯示記憶體的讀出值2的機率分佈401、記憶體的讀出值1的機率分佈402及記憶體的讀出值0的機率分佈403。機率分佈401也稱為WA (2),機率分佈402也稱為WA (1),機率分佈403也稱為WA (0)。
機率分佈401及402有一個重疊區404,機率分佈402及403有一個重疊區405。
根據一個實施例,讀出的物理值可以是一個電流強度。
將記憶胞元Si 的讀出電流的電流強度對時間t 積分,在一時間點ti 達到一預定的門限值Sw
將記憶胞元Sj 的讀出電流的電流強度對時間t 積分,在一時間點tj 達到一預定的門限值Sw
如果在記憶胞元Si 內寫入數位值2,則記憶胞元Si 具有一相當大的電阻,且讀取記憶胞元Si 時,讀出電流相當小。與此相應的,讀出電流的時間積分達到預定的門限值Sw 的時間點ti 相當長。
如果在記憶胞元Sj 內寫入數位值1,則記憶胞元Sj 的電阻小於記憶胞元Si 的電阻。與此相應的,讀出記憶胞元Sj 時的讀出電流大於讀出記憶胞元Si 時的讀出電流。因此讀出電流的時間積分達到預定的門限值Sw 的時間點tj 早於時間點ti ,也就是說tj ti
如果在記憶胞元Sk 內寫入數位值0,則記憶胞元Sk 的電阻既小於記憶胞元Si 的電阻,也小於記憶胞元Sj 的電阻。與此相應的,讀出記憶胞元Sk 時的讀出電流既大於記憶胞元Si 的讀出電流,也大於記憶胞元Sj 的讀出電流。因此讀出電流的時間積分達到預定的門限值Sw 的時間點tk 早於時間點ti tj ,也就是說tk tj ti
如果在記憶胞元Si 內寫入的數位值與寫入記憶胞元Sj 的數位值相同,則記憶胞元Si 的電阻可能大於或小於記憶胞元Sj 的電阻
同樣可能的是,記憶胞元Si 的讀出電流可能大於或小於記憶胞元Sj 的讀出電流
同樣可能的是,記憶胞元Si 的讀出電流的時間積分達到預定的門限值Sw 的時間點ti 早於或晚於記憶胞元Sj 的讀出電流的時間積分達到預定的門限值Sw 的時間點tj
在這種情況下並不確定是ti tj tj ti 。此處的“不確定”一詞也可以寫成符號“-”。範例
n =6個記憶胞元S 1S 6 的分組為例。這個分組共有3個子群,每個子群有2個記憶胞元,也就是說n 1 =n 2 =n 3 =2,其中: - 在n 1 =2個第一記憶胞元內儲存數位記憶胞元值2; - 在n 2 =2個第二記憶胞元內儲存數位記憶胞元值1;及 - 在n 3 =2個第一記憶胞元內儲存數位記憶胞元值0。
因此共有種可能性將兩個2、兩個1及兩個0分配到6個位置,並以三數位(三進制)記憶胞元值儲存到6個記憶胞元內。
而在n =6及n 1 =n 2 =3的情況下只有種可能性將3個2及3個0分配到6個位置,並以二進制記憶胞元值儲存到6個記憶胞元內,因此使用3個三進制數位值0、1及2能夠在n 個記憶胞元的分組中儲存的資訊遠多於使用二進制記憶胞元值0及1。
因此在這個例子(每一個記憶胞元值都可以是數位值0、1或2)中,可以將k =6個資料位元(有26 =64個可能的佔用)轉換成n =6個數位記憶胞元值,並儲存到n =6個記憶胞元內。這6個記憶胞元值分別是 -n 1 =2個第一數位值2; -n 2 =2個第二數位值1;及 -n 3 =2個第三數位值0。
這6個數記憶胞元值構成2-,2-,2-aus-6-代碼的代碼字,其中每個代碼都包含兩個第一數位值、兩個第二數位值及兩個第三數位值。
這個代碼有個代碼字。
k =6個位元,2 k =26 =64個長度6的二進制字可以一一對應的轉換成2-,2-,2-aus-n -代碼的64個代碼字。
15 顯示如何經由轉換電路1501將k 個資料位元x 1xk 轉換成n 個記憶胞元值,並儲存到記憶體1502的n 個記憶胞元內。此處假設k ≧2及n ≧3。k 個資料位元x 1xk 位於轉換電路1501的輸入端。
n 個記憶胞元值是由轉換電路1501提供給記憶體1502的記憶胞元的資料輸入端。這n 個記憶胞元值構成n 1 -, n2 -,…,nK -aus-n -代碼的代碼字。
例如,這些記憶胞元值是K 值數位值。
16 顯示第15圖之電路配置的一個實際的例子,在第16圖的例子中,n =k =6、K =3及n 1 =n 2 =n 3 =2。根據第16圖顯示的例子,6個資料位元x 1x 6 經由轉換電路1601被轉換成6個3值記憶胞元值,並儲存到記憶體1602內。這6個包含兩個2、兩個1及兩個0,並構成(在沒有錯誤的情況下)2-,2-,2-aus-6-代碼的代碼字。每一個記憶胞元都可以儲存3值(K =3)記憶胞元值。
如前面所述,在讀取記憶胞元S 1S 6 時會決定讀出電流的時間積分達到(或超過)門限值Sw 的時間點t 1t 6 。例如,若 下式成立:, 則可以將記憶胞元S 1S 6 的順序排列如下:其中值i 1 ,...,i 6 的數量等於值1,..., 6的數量。例如i 1 =5、i 2 =4、i 3 =2、i 4 =1、i 5 =6及i 6 =3,則產生以下的關係:t 5t 4t 2t 1t 6t 3 以及記憶胞元的順序排列如下:S 5 ,S 4 ,S 2 ,S 1 ,S 6 ,S 3
可以設定在記憶胞元的順序中,前面兩個記憶胞元配屬到數位記憶胞元值0,接下來兩個記憶胞元配屬到數位記憶胞元值1,最後面兩個記憶胞元配屬到數位記憶胞元值2。
也可以設定在記憶胞元的順序中,前面兩個記憶胞元配屬到數位記憶胞元值2,接下來兩個記憶胞元配屬到數位記憶胞元值1,最後面兩個記憶胞元配屬到數位記憶胞元值0。當然除了上述的配屬方式外,也可以是其他的配屬方式。
只有以下的情況能夠達到沒有錯誤的配屬: - 記憶胞元的讀出電流及記憶胞元的讀出電流均位於一重疊區,且在此重疊區內出現一個值為0及1的讀出電流;或是 - 記憶胞元的讀出電流及記憶胞元的讀出電流均位於一重疊區,且在此重疊區內出現一個值為1的讀出電流及一個值為2的讀出電流。
這樣做的優點是多值數位記憶體也可以有很高的機率實現沒有錯誤的配屬數位值,因為這6個記憶胞元只有很小一部分的記憶胞元可能出現配屬錯誤,而且要發生錯誤還必須每兩個記憶胞元的讀出電流同時位於一個重疊區內。
因此這樣做的好處是,在讀出儲存的記憶胞元值時,發生錯誤的機率很大低。因為在讀出時可以將從不同的記憶胞元讀出的物理值或由讀出的物理值決定的值相互比較,其結果是可以大幅降低錯誤發生的機率。只有在兩個要比較的值都位於一重疊區,才可能發生錯誤。
另一種可能性是利用參考值讀出儲存在n 個記憶胞元內的K 值記憶胞元值,但前提是儲存在相應的n 個記憶胞元內的代碼字構成一個(n 1 -,n 2-,…,nK -aus-n )-代碼。範例: 4 值記憶胞元值
17 顯示如何將4個資料位元x 1x 2x 3x 4 轉換成4個記憶胞元值z 1z 2z 3z 4
4個資料位元x 1x 2x 3x 4 位於轉換電路1701的輸入端。這4個資料位元經由轉換電路1701被轉換成4個記憶胞元值z 1z 2z 3z 4 ,並儲存到記憶體1702的記憶胞元S 1S 2S 3S 4 內。
在這個例子中,記憶體1702包含由n =4個記憶胞元S 1S 2S 3S 4 構成的分組,其中每一個記憶胞元都可以儲存4個不同的值0、1、2、3及4。因此每個子群都有一個記憶胞元,也就是說n 1 =n 2 =n 3 =n 4 =1。
在沒有錯誤的情況下,記憶胞元值z 1z 2z 3z 4 構成1-,1-,1-,1-aus-4-代碼的代碼字(共有24個可能的代碼)。因此包含n =4個記憶胞元的分組可以儲存24個不同的數位值。
5 顯示從記憶體1702讀出的值3的機率分佈501、從記憶體1702讀出的值2的機率分佈502、從記憶體1702讀出的值1的機率分佈503、以及從記憶體1702讀出的值0的機率分佈504。機率分佈501也稱為WA (3),機率分佈502也稱為WA (2),機率分佈503也稱為WA (1),機率分佈504也稱為WA (0)。
每一個值0、1、2、3及4都可以被儲存在記憶體1702的多個4值記憶胞元中的記憶胞元內。
例如,從記憶體1702讀出的值可以是一個電流強度(讀出電流),並根據電流強度的大小產生一個值(0、1、2、3或4)。
機率分佈501及502具有一個重疊區505,機率分佈502及503具有一個重疊區506,機率分佈503及504具有一個重疊區507。
如果將記憶胞元Si 的讀出電流的電流強度WA (τ) i 對時間t 積分,則會在一個特定的時間點ti 達到預定的門限值Sw
如果將記憶胞元Sj 的讀出電流的電流強度WA (τ) j 對時間t 積分,則會在一個特定的時間點tj 達到預定的門限值Sw
例如,如果記憶胞元Si 儲存的數位值是3,記憶胞元Sj 儲存的數位值是0、1或2,則tj ti ,因為Si 的讀出電流小於Sj 的讀出電流
例如,如果記憶胞元Si 儲存的數位值是1,記憶胞元Sj 儲存的數位值是3或2,則tj ti ,因為Si 的讀出電流大於Sj 的讀出電流
如果t 1t 3t 2t 4 ,則記憶胞元的順序是S 1S 3S 2S 4 。可以將數位值0配屬給記憶胞元S 1 ,將數位值1配屬給記憶胞元S 3 ,將數位值2配屬給記憶胞元S 2 ,將數位值3配屬給記憶胞元S 4
4個資料位元x 1x 2x 3x 4 位於轉換電路1701的輸入端,並在轉換電路1701的輸出端輸出記憶胞元值z 1z 2z 3z 4 。例如可以根據 1 確定這個在轉換電路1701內執行的轉換。
4個資料位元x 1x 2x 3x 4 可以接受16個不同的二進制值0000,…, 1111,這些值全部顯示在表1中。表1中的每一行都相當於轉換電路1701執行的一個轉換,也就是將資料位元xi 轉換成1-,1-,1-,1-aus-4-代碼的代碼字zi
例如,表1的第3行顯示代碼字3120配屬於資料位元0010。
如前面所述,1-,1-,1-,1-aus-4-代碼共有24個不同的代碼字。x 1x 2x 3x 4 的16個不同的值對應這24個代碼字。根據表1,24個代碼字中只用到16個代碼字。 1
如果在讀出記憶胞元S 1S 2S 3S 4 時確定4個記憶胞元值z 1z 2z 3z 4 ,且這些記憶胞元值在沒有錯誤的情況下構成1-,1-,1-,1-aus-4-代碼,則可以根據表1將這些記憶胞元值轉換成相應的資料位元x 1x 2x 3x 4
2 顯示一個可能的反轉換。
在表2中,資料位元的16個可能的佔用配屬於24個代碼字,其中一部分的代碼字(表2第17至24行)沒有資料位元,或是這個代碼字的資料位元是不確定的。因此表2顯示的是表1的反轉換。
例如,表1第5行顯示代碼字3012配屬於資料位元0100。與此相應的,表2第5行顯示資料位元0100配屬於代碼字3012。
表2第17至24行的資料位元不確定。在合成反轉換電路時,可以將不確定的資料位元作為所謂的“不用在意的”值,以優化電路。可以將任何一個值填入不確定的資料位元,例如填入0。 2 範例:將 11 個資料位元轉換成 8 個記憶胞元
例如,可以將k =11個資料位元x 1 ,…,x 11 轉換到包含記憶胞元值z 1 ,…,z 8 的8個記憶胞元。這些記憶胞元值是2-,2-,2-,2-aus-8-代碼的代碼字。每個記憶胞元值都是4值(K =4),也就是說每個記憶胞元可以儲存4個不同的值中的一個值。
透過11個資料位元可以表示211 =2048個不同的值。2-,2-,2-,2-aus-8-代碼包含個代碼字。這2520個代碼字足夠將2048個二進制值轉換成2-,2-,2-,2-aus-8-代碼的代碼字。範例:將 9 個資料位元轉換到 7 個記憶胞元
也可以將k =9個資料位元x 1 ,…,x 9 轉換到包含記憶胞元值z 1 ,…,z 7n =7個記憶胞元。這些記憶胞元值是2-,2-,2-,1-aus-7-代碼的代碼字。每個記憶胞元值都是4值(K =4)。
透過9個資料位元可以表示29 =512個不同的值。2-,2-,2-,2-aus-7-代碼包含個代碼字。這630個代碼字足夠將512個二進制值轉換成2-,2-,2-,2-aus-7-代碼的代碼字。
這樣做的一個優點是,在讀出及決定構成n 1 -,…,nK -aus-n -代碼之代碼字的數位記憶胞元值時,不需要參考值。透過從記憶胞元讀出的物理值的相互比較,或是比較從讀出的物理值導出的值,就可以確定讀出的數位記憶胞元值,因此即使不同的記憶胞元值的機率分佈有重疊區,發生讀出錯誤己率也很低。利用比較器讀取記憶器
6 顯示一具有n =4個記憶胞元S 1S 2S 3S 4 的記憶體601。讀出值、在記憶胞元的輸出端被讀出,並使用個比較器602至607以成對的方式比較讀出值。例如可以用比較電路作為比較器。
比較器602比較記憶胞元S 1S 2 的讀出值及。如果讀出值>,則比較器602會在輸出端輸出一個二進制值y 12 =1,如果讀出值<,則會輸出一個二進制值y 12 =0。
比較器603比較記憶胞元S 1S 3 的讀出值及。如果讀出值>,則比較器602會在輸出端輸出一個二進制值y 13 =1,如果讀出值<,則會輸出一個二進制值y 13 =0。
比較器604比較記憶胞元S 1S 4 的讀出值及。如果讀出值>,則比較器604會在輸出端輸出一個二進制值y 14 =1,如果讀出值<,則會輸出一個二進制值y 14 =0。
比較器605比較記憶胞元S 2S 3 的讀出值。如果讀出值,則比較器605會在輸出端輸出一個二進制值y 23 =1,如果讀出值,則會輸出一個二進制值y 23 =0。
比較器606比較記憶胞元S 2S 4 的讀出值。如果讀出值,則比較器606會在輸出端輸出一個二進制值y 24 =1,如果讀出值,則會輸出一個二進制值y 24 =0。
比較器607比較記憶胞元S 3S 4 的讀出值。如果讀出值,則比較器607會在輸出端輸出一個二進制值y 34 =1,如果讀出值,則會輸出一個二進制值y 34 =0。
如果兩個子群的數量為n 1 =n 2 =2,則在n =4個記憶胞元S 1S 4 的分組中可以儲存個佔用。
3 顯示比較器602至607的這6個佔用的輸出值y 12y 13y 14y 23y 24y 34 3
例如,表3第一行描述記憶胞元S 1S 4 被二進制值1100佔用。因此比較器602至607輸出二進制值y 13 =y 14 =y 23 =y 24 = 1。由於記憶胞元S 1S 2 都被二進制值1佔用,因此比較器602會比較兩個值及,這兩個值均配屬一儲存的二進制值1。在這種情況下無法預知是<,或>,因此比較器602的輸出值y 12 是不確定的。比較器607的輸出值y 34 也是不確定的,因為記憶胞元S 3S 4 的兩個值,都具有二進制值0。
因此在表3中,如果配屬之記憶胞元的要比較的輸出值具有相同的值,則比較器的輸出值是不確定的。
在“函數”欄中,由相應之比較器的否定或非否定的輸出值的連結構成的布爾表達式(BolleSC heR AusDR uCK )被配屬到表3的行:如果輸出值yij =1,則輸出值會出現在連結中;如果輸出值yij =0,則負的輸出值會出現在連結中。如果輸出值是不確定(“-”),則輸出值會出現在連結中。這樣做的優點是可減輕電路轉換的工作。
對具有2-aus-4-代碼之位元的記憶胞元S 1S 4 的6個佔用中的一個佔用而言,6個連結中的一個連結的值正好1:例如根據表3第3行,記憶胞元的佔用1001相當於連結
比較器602、603、606及607的輸出值y 12 =1、y 13 =1、y 24 =0及y 34 =0。在這個例子中,表3所有其他的連結的值都是0。
連結的值是1,也就是明確確定記憶胞元S 1S 4 輸出的是佔用1001。確定記憶胞元的佔用
7 顯示一個電路佈置,根據比較器602至607的值y 12y 13y 14y 23y 24y 34 決定記憶胞元S 1S 4 的相應的佔用。例如利用6個各有4個輸入端的“與”門701至706及4個各有3個輸入端的“或”門708至711。
y 13y 14y 23y 24 被送到“與”門701的輸入端。值y 12y 14y 24 被送到“與”門702的輸入端。值y 12y 13被送到“與”門703的輸入端。值y 24y 34 被送到“與”門704的輸入端。值y 23被送到“與”門705的輸入端。值被送到“與”門706的輸入端。
此外,“與”門701至706的輸入端是按照下列方式與“或”門708至711的輸入端連接:“與”門701的輸出端分別與“或”門708及709的一個輸入端連接。“與”門702的輸出端分別與“或”門708及710的一個輸入端連接。“與”門703的輸出端分別與“或”門708及711的一個輸入端連接。“與”門704的輸出端分別與“或”門709及710的一個輸入端連接。“與”門705的輸出端分別與“或”門709及711的一個輸入端連接。“與”門706的輸出端分別與“或”門710及711的一個輸入端連接。
記憶胞元S 1 的佔用備妥在“或”門708的輸出端,記憶胞元S 2 的佔用備妥在“或”門709的輸出端,記憶胞元S 3 的佔用備妥在“或”門710的輸出端,記憶胞元S 4 的佔用備妥在“或”門711的輸出端。
因此第7圖的電路佈置以下列方式將表3視覺化:表3的函數被顯示在“與”門701至706的輸出端,其中“與”門701相當於表3第一行的函數,“與”門706相當於表3最後一行的函數。第7圖中記憶胞元Si 的佔用是以下列方式產生自記憶胞元Si 的列:在表中的行中,如果這個列的值是1,則存在一個對函數(連結)的“或”邏輯運算。例如,記憶胞元Si 在表3的最前面3行的值是1,也就是說與“與”存在一個門701、702及703的輸出端存在一個“或”邏輯運算,其作用是連結表3的最前面3行。這個規則也適用於其他的記憶胞元。範例: 3 值記憶胞元
以下將討論一個3值記憶胞元的例子,也就是說,一個記憶胞元的值可以是0、1或2,而且在這個例子中2>1>0。
例如,分組包含n =6個記憶胞元,而且各子群的記憶胞元數n 1 =n 2 =n 3 =2。這樣一個分組的6個記憶胞元可以儲存兩個2、兩個1及兩個0。因此有種可能性用兩個2、兩個1及兩個0佔用一個分組的6個記憶胞元S 1S 6
從記憶胞元讀出資料時,如果以成對的方式比較所有記憶胞元讀出的值,則需使用15個比較器VGLij ,才能比較記憶胞元S 1S 6 的所有的物理輸出值,其中指數i ,j =1…6是作為標示記憶胞元之用。也就是說比較器VGLij 是比較記憶胞元Si 及記憶胞元Sj 。這15個比較器VGLij VGL 12VGL 13VGL 14VGL 15VGL 16VGL 23VGL 24VGL 25VGL 26VGL 34VGL 35VGL 36VGL 45VGL 46VGL 56
比較器VGLij 的二進制輸出值記為yij ,因此這相當於以下15個二進制輸出值:y 12y 13y 14y 1y 16y 23y 24y 25y 26y 34y 35y 36y 45y 46y 56
為了顯示記憶胞元S 1S 6 的佔用221100, 4 顯示這15個比較器的輸出值: 4
產生以下的連結:
這個連結包含15個比較器的12個值。這些都不是尚未確定的值。
原則上:1代表比較器的一個不可逆或非否定的值yij ,0代表一個可逆或否定的值
為了顯示記憶胞元S 1S 6 的佔用212100, 5 顯示這15個比較器的輸出值: 5
產生以下的連結:
這個連結包含15個比較器的12個值。這些都不是尚未確定的值。
為了顯示記憶胞元S 1S 6 的佔用001122, 6 顯示這15個比較器的輸出值: 6
產生以下的連結:
這個連結包含15個比較器的12個值。這些都不是尚未確定的值。
記憶胞元的其他包含兩個2、兩個1及兩個0的佔用也都會產生相應於上述的連結。15個輸出值(可逆或不可逆)中的12個不是尚未確定的輸出值構成相應的連結。如果相應於連結的佔用被儲存在記憶胞元S 1S 6 ,同時記憶胞元讀出的讀出值以成對的方式在比較器VGLij 中被比較,則這些連結的值正好是1。範例:轉換及反轉換
8 顯示一個實施例,其中m 個資料位元被儲存在記憶體803的記憶胞元S 1Sn 。第8圖顯示一個包含n 個記憶胞元S 1Sn 的分組,其中- n 1 個第一值儲存在n 1 個記憶胞元,- n 2 個第二值儲存在n 2 個記憶胞元, . . .- nK 個第K 值儲存在nK 個記憶胞元。 換句話說有K 個子群。每一個子群都儲存一特定數量的相同的值。不同的子群儲存的是不同的值。
可以將儲存在n 個記憶胞元組成的分組中的m 個資料位元稱為m -位元-位元組,或簡稱為位元組。以字母mk 代表資料位元之數量的變數。
下式成立: 2 m N 其中。 而且mn 。其中N 代表以n 1 個第一值、n 2 個第二值,…,nK 個第K 值佔用n 個記憶胞元構成的分組的可能性的數量。
轉換電路801執行一個轉換TS (m ,n ),將2 m 個字寬m 的資料位元轉換成2 m Nz 1 ,z 2 ,…,zn ,其中 -z 1 ,z 2 ,…,zn 中有n 1 個值等於0, -z 1 ,z 2 ,…,zn 中有n 2 個值等於1, . . . -z 1 ,z 2 ,…,zn 中有nK 個值等於K -1。
如果不需要2 m 個字寬m 的資料位元中的所有資料位元,則可以只轉換需要的資料位元,並將其儲存到記憶胞元。
例如轉換電路801的設計是使轉換T (m ,n )將字寬m 的位元值x 1 ,…,xm 轉換成應儲存到記憶胞元S 1Sn 內的字寬n 的值z 1 ,z 2 ,…,zn ,其中 -z 1 ,z 2 ,…,zn 中有n 1 個值等於0, -z 1 ,z 2 ,…,zn 中有n 2 個值等於1, . . . -z 1 ,z 2 ,…,zn 中有nK 個值等於K -1。
例如可以將m 個位元x 1 ,…,xm 稱為資料位元。特別是這種資料位元不同於儲存在記憶體的記憶胞元的值。例如,x 1 ,…,xm 是用於錯誤辨識或錯誤修正的錯誤代碼的一個代碼字的位元,則這些位元也可以包含錯誤代碼的至少一個檢驗位元,或僅是錯誤代碼的檢驗位元。
記憶胞元S 1Sn 被讀出,並經由轉換電路802產生的轉換TS -1 (n ,m )將讀出值z1z n 轉換成資料位元x1 ,…,x m ,在沒有錯誤的情況下下式成立:x1 ,…,x m =x 1 ,…,xm
轉換電路801及轉換電路802的配置較佳是使轉換T (m ,n )及其反轉換T -1 (n ,m )適用以下的關係式:T -1 (n ,m ){T (m ,n )[x 1 ,…,xm ]} =x 1 ,…,xm
如果將位元x 1xm 稱為m -位元-位元組,則一個m -位元-位元組是作為一個字z 1zn 被儲存到記憶體的n 個記憶胞元,其中一預定數量n 1 的第一記憶胞元儲存第一值、一預定數量n 2 的第二記憶胞元儲存第二值、…、一預定數量nK 的第K 記憶胞元儲存第K 值。
例如:以K =2個記憶體儲存的n 1 個第一記憶胞元儲存第一值0及n 2 個第二記憶胞元儲存第二值1。因此在記憶胞元S 1Sn 內會儲存一n 2 -aus-n -代碼的代碼字。
另一個例子:如果能夠在記憶胞元S 1Sn 中的每一個記憶胞元內儲存4個值,則可以在n 1 個記憶胞元儲存第一值、在n 2 個記憶胞元儲存第二值、在n 3 個記憶胞元儲存第三值,以及在n 4 個第一記憶胞元儲存第四值。也就是說:n 1 +n 2 +n 3 +n 4 =n
如前面所述,從不同記憶胞元讀出的物理特性(例如物理值)可以互相比較。這樣做至少可以降低一部分的錯誤機率。只有當兩個在讀出時被成對比較的值同時位於物理值的機率分佈的重疊區時,才可能出現錯誤,若是只有一個值位於重疊區,則不會出現錯誤。範例 9 :第 9
9 顯示將一個m -位元-位元組儲存在n 個記憶胞元內的例子,其中m =4、n =6及n 1 =n 2 =3。在n 1 =3個記憶胞元內儲存的是第一數位值0,在n 2 =3個記憶胞元內儲存的是第二數位值1。4-位元-位元組是作為3-aus-6-代碼的一個6-位元-字被儲存在6個記憶胞元內。
第9圖顯示將3個4-位元-位元組儲存在記憶體901的6個記憶胞元內的例子,例如記憶胞元可以儲存數位二進制值。經由轉換電路902將4-位元-位元組x 1x 2x 3x 4 轉換成二進制值z 1z 6 ,並將z 1z 6 儲存到記憶體901的記憶胞元S 1S 6 內。經由轉換電路903將4-位元-位元組x 5x 6x 7x 8 轉換成二進制值z 7z 12 ,並將z 7z 12 儲存到記憶體901的記憶胞元S 7S 12 內。經由轉換電路904將4-位元-位元組x 9x 10x 11x 12 轉換成二進制值z 13z 18 ,並將z 13z 18 儲存到記憶體901的記憶胞元S 13S 18 內。
轉換電路902至904都會執行一個轉換T (4, 6)。可以用一個表描述轉換T (4, 6),這個表為16個可能的4位元值的每一個值各配屬3-aus-6-代碼的一個不同代碼字。 7 顯示一個例子。 7
例如可以用一個組合(邏輯)電路或唯讀記憶體實現這樣的表。
如果儲存在記憶胞元內的值或記憶胞元值是二進制值,則也可以將這些值稱為記憶位元。
在這個例子中,資料位元的反轉換導致記憶位元的反轉換。
可以選擇性的利用功能相同的轉換或具有相同作用的轉換電路將不同的4-位元-位元組轉換成記憶值,特別是轉換成記憶位元。同樣的,也可以利用不同功能的轉換或轉換電路將不同的4-位元-位元組轉換成記憶位元或記憶值。例如在轉換電路902至904中至少有兩個轉換電路可以執行不同的轉換功能。與此相應的,轉換電路905至907能夠執行相應的反轉換功能。
例如,可以設計適當的轉換使4-位元-位元組x 的反轉換變成數位值z 的反轉換。
從記憶體901被讀出的記憶位元z1z2z3z4z5z6 被轉換電路905轉換成4-位元-位元組x1x2x3x4 。同樣的,被讀出的記憶位元z7z8z9z10z11z12 被轉換電路906轉換成4-位元-位元組x5x6x7x8 。被讀出的記憶位元z13z14z15z16z17z18 被轉換電路907轉換成4-位元-位元組x9x10x11x12
轉換電路905、906及907各實現一個轉換TS -1 (6, 4),這個轉換是表7顯示之轉換的反轉換,其作用是將n =6個狀態位元z(i n ) (i =1...3及n =1...6)轉換成m =4個資料位元x(i m ) (i =1...3及m =1...4)。
由於發生錯誤的關係,從記憶體901被讀出的記憶位元z(i n ) 可能會不同於原本儲存的位元z (i n ) 。因此被讀出的資料位元x i m 也可能不同於原本儲存的位元xi m
如果沒有發生任何錯誤,則前面4個資料位元x 1x 4 、前面6個被轉換的位元z 1z 6 、前面6個被反轉換的位元z1z6 ,以及前面4個由此產生的資料位元x1x 4 ’的關係如下:z 1 ,z 2 ,z 3 ,z 4 ,z 5 ,z 6 =z1 ,z2 ,z3 ,z4 ,z5 ,z6 x 1 ,x 2 ,x 3 ,x 4 =x1 ,x2 ,x3 ,x4
同樣的,第二組4個數位元及第三組4個資料位元也存在以上的關係。
為了完整性的關係, 8 顯示一個轉換TS -1 (6, 4)。這個轉換是表7顯示之轉換的反轉換。
可以將數位位元x1x4 所屬的任意值設定給未在表8中列出的記憶位元z1z6 的值,以合成反轉換電路905。例如,可以將這些任意值作為未確定的值 ,也稱為“不用在意的”值,並在以合成工具優化電路時確定這些值。另外一種選擇是將這些值全部設為0。 8 錯誤辨識及 / 或錯誤修正
如果反轉換電路905將錯誤的資料立元配屬到錯誤的記憶位元,則可以透過一個錯誤代碼辨識及/或修正錯誤的4-位元-位元組。以下將以例子說明。
10 顯示電路配置的一個例子,此電路配置可以執行錯誤辨識或同時執行錯誤辨識及錯誤修正,其中資料位元經由一轉換電路被轉換成儲存在記憶體的記憶胞元內的儲存位元。
資料位元x 位於編碼器1001的輸入端,根據錯誤代碼C 1 編碼的位元y =Cod (x )產生於編碼器1001的輸出端。
有一個可能性是,錯誤代碼C 1 是一個修正及/或辨識位元組錯誤的代碼,例如里德所羅門代碼(Reed-Solomon Code)。另一個可能性是,錯誤代碼C 1 是一個修正及/或辨識位元錯誤的代碼,例如BCH代碼、Hsiao代碼、漢明代碼(Hamming Code)代碼、低密度奇偶代碼,或其他的代碼。
經由轉換電路1002將從編碼器1001的輸出端輸出的位元(或位元組)y =Cod (x )轉換成數位值z (y ),儲存在記憶體1003的記憶胞元。轉換電路1002執行一個轉換TS
在一個包含n 個記憶胞元的分組中,n 1 個第一值儲存在n 1 個第一記憶胞元、n 2 個第二值儲存在n 2 個第二記憶胞元、…、nK 個第K 值儲存在nK 個第K 記憶胞元。其中:n 1 +n 2 +…+nK =n
下一個步驟是從記憶體1003的相應的記憶胞元讀出值z ’(y )。值z ’(y )有可能會因為至少一個錯誤而不同於被寫入的值z (y )。如果沒有發生錯誤,則z (y )=z ’(y )。
接著從記憶體1003讀出的值z ’(y )被一執行反轉TS -1 的反轉電路1004轉換成二進制值y ’。
如果沒有發生錯誤,則y ’ =y =Cod (x )。
如果有發生錯誤,則y ’≠y =Cod (x )。
修正值產生器1005會根據錯誤代碼C 1 產生一個相當於字寬的修正值e ,其中修正值e 的分量在異或電路1007中與值y ’以分量方式異或連接。異或電路1007的作用是執行輸入信號的異或邏輯運算,並將這個邏輯運算的結果送至輸出端。如果輸入端的信號是相同的,則異或電路會在輸出端輸出邏輯值1。如果輸入端的信號是不同的,則異或電路會在輸出端輸出邏輯值0。
在異或電路1007的輸出端會產生一個修正值ycor 。如果出現一個能夠經由代碼C 1 以修正值產生器1005修正的錯誤,則被修正的位元等於編碼的位元,也就是說:ycor =y =Cod (x )。
此外,第10圖還顯示一個錯誤辨識電路1006,根據這個電路可以確定是否存在錯誤代碼C 1 可以辨識的錯誤及/或特定類型的錯誤。將值y ’輸入錯誤辨識電路1006,錯誤辨識電路1006就會輸出錯誤訊息1008。
例如,如果錯誤代碼是一個修正1位元組錯誤及辨識2位元組錯誤的代碼,則錯誤辨識電路1006可以根據沒有錯誤、出現一個1位元組錯誤,或出現一個2位元組錯誤等情況輸出不同的錯誤訊息1008。例如錯誤訊息1008可以被編碼成位元順序00、01或10(在這個例子中是包含兩個位元的位元順序)。
可以選擇性的共同實現或部分共同實現錯誤辨識電路1006及修正值產生器1005。
如果錯誤代碼C 1 是一個可分開的代碼,也就是說,在編碼時資料位元不會被編碼器1001改變,則在沒有錯誤的情況下,異或電路1006輸出的位元會等於被送入編碼器1001,且在被轉換電路1002轉換後儲存在記憶體1003的相應的資料位元。
11 顯示另一種電路配置,此電路配置可以執行錯誤辨識或同時執行錯誤辨識及錯誤修正。
資料位元x 位於轉換電路1101的輸入端,並被轉換成值z (x )。轉換電路1101的值z (x )位於編碼器1102的輸入端,編碼器1102能夠應用錯誤代碼C 2 在輸出端產生經過編碼的資料Cod (z (x ))。
編碼器1102能夠執行編碼功能及檢驗位元轉換功能。
例如,假設錯誤代碼C 2 是一個可分開的代碼,則位於編碼器1102之輸入端的值z (x )會在經編碼器確定的輸出資料Cod (z (x ))中不受改變的保留下來,並根據錯誤代碼C 2 被加上檢驗位元。
在這個例子中,編碼器1102會將位於其輸入端的值z (x )不經任何改變的在其輸出端執行(為此輸入端及輸出端都可以有複數個線路,而且每一個線路均配屬於一個位元),並另外根據錯誤代碼C 2 從位元z (x )產生檢驗位元,以及在儲存到記憶體1103之前,先轉換這些檢驗位元。
例如,值z (x )構成包含n 個位元的分組,這些位元是由一個n 1 -aus-n -代碼的代碼字組成。同樣的,編碼器1102產生的經過轉換的檢驗位元也可以是n 1 -aus-n -代碼字或包含這樣的代碼字。
例如,有一種可能性是,透過編碼器1102將錯誤代碼C 2 從位元z (x )確定的檢驗位元轉換成位元,其中每兩個位元都是彼此互補。每一個檢驗位元都被轉換成兩個位元,並儲存在兩個記憶胞元內。例如,可以將檢驗位元1轉換成位元10,以及將檢驗位元0轉換成位元01,並分別儲存在兩個記憶胞元內。
也可以利用其他的轉換將檢驗位元轉換成記憶胞元值。例如一種可能性是將檢驗位元變成3倍或兩倍及/或以其他容許錯誤的方式寫入記憶體1103。
在一個包含記憶體1103的n 個記憶胞元的分組中,n 1 個第一值儲存在第一數量n 1 個第一記憶胞元、n 2 個第二值儲存在第二數量n 2 個第二記憶胞元、…、nK 個第K 值儲存在預定的第K 數量nK 個第K 記憶胞元。其中:n 1 +n 2 +…+nK =n
第10圖顯示的電路配置是利用資料位元進行錯誤處理。與此相反的,第11圖的電路配置是根據轉換電路1101從資料位元確定的記憶胞元值進行錯誤處理。此處所謂的錯誤處理是指錯誤辨識及/或錯誤修正。
12 顯示第11圖之電路配置的一種變化方式。
資料位元x 位於轉換電路1201的輸入端,並被轉換成代碼字[3-aus -6]1 ,其中資料位元的每4個位元被轉換成一個3-aus-6-代碼字。這些3-aus-6-代碼字[3-aus -6]1 是在轉換電路1201的輸出端產生。轉換電路1201以可逆的方式明確的為16個4位元值中的每一個4位元值配屬3-aus-6-代碼的一個代碼字。
轉換電路1201的輸出端與檢驗位元產生器1202的輸入端連接,根據一個錯誤代碼確定3-aus-6-代碼字的位元的檢驗位元Pr ,並產生於其輸出端。
位元產生器1202產生一個BCH代碼的檢驗位元。在沒有錯誤的情況下,轉換電路1201輸出的位元及檢驗位元產生器1202輸出的檢驗位元構成BCH代碼的一個代碼字。
也可以不使用BCH代碼,而是使用其他的錯誤代碼。另一種可能性是將複數個錯誤代碼組合在一起使用。
轉換電路1201的輸出端也與記憶體1204的輸入端連接,因此從資料位元經由轉換電路1201獲得的3-aus-6-代碼字(也可以不含檢驗位元)被儲存在記憶體1204內。
檢驗位元產生器1202的輸出端與檢驗位元轉換器1203的輸入端連接,其中檢驗位元轉換器1203將所產生的檢驗位元轉換成3-aus-6-代碼字[3-aus -6]2 ,並將其送到輸出端。
檢驗位元轉換器1203的輸出端與記憶體1204的輸入端連接。例如可以利用記憶體的分開的資料輸入端。這樣就可以將檢驗位元轉換器1203以檢驗位元Pr 為基礎產生的3-aus-6-代碼字[3-aus -6]2 儲存到記憶體1204內。
在沒有錯誤的情況下,記憶體1204內儲存的位元是3-aus-6-代碼字。這些位元也稱為記憶胞元值。
轉換電路1201從資料位元x 產生3-aus-6-代碼的代碼字[3-aus -6]1 ,並將其寫入記憶體1204。這些代碼字[3-aus -6]1 構成記憶體1204之記憶胞元的記憶胞元值。
檢驗位元產生器1202根據所使用的錯誤代碼從代碼字[3-aus -6]1 的位元確定檢驗位元Pr ,並將其送到輸出端。檢驗位元轉換器1203將檢驗位元Pr 轉換成3-aus-6-代碼的代碼字[3-aus -6]2 。這些代碼字[3-aus -6]2 構成記憶體1204之記憶胞元的記憶胞元值,其中該等記憶胞元值是從檢驗位元Pr 產生的。
因此代碼字[3-aus -6]1 及代碼字[3-aus -6]2 被儲存在記憶體1204內。在儲存或讀出時可能發生位元錯誤,這可能導致代碼字[3-aus -6]1 及代碼字[3-aus -6]2 被摻雜到錯誤的位元中。
在讀出時,記憶體1204會輸出配屬於資料位元的位元[3-aus -6]’1 ,以及配屬於經轉換之資料位元之檢驗位元的位元[3-aus -6]’2 。位元[3-aus -6]’1 及位元[3-aus -6]’2 可能含有位元錯誤。在沒有錯誤的情況下: [3-aus -6]’1 = [3-aus -6]1 [3-aus -6]’2 = [3-aus -6]2
記憶體1204輸出位元[3-aus -6]’2 的輸出端與反檢驗位元轉換器1205的輸入端連接,其中反檢驗位元轉換器1205以位元[3-aus -6]’2 為基礎確定可能有錯誤的檢驗位元Pr ’,並將其送到輸出端。反檢驗位元轉換器1205執行檢驗位元轉換器1203執行的轉換的反轉換。
在沒有錯誤的情況下,反檢驗位元轉換器1205從輸出端輸出與檢驗位元產生器1202產生之檢驗位元相同的檢驗位元Pr
可能出錯的檢驗位元Pr ’是相當於資料位元的位元[3-aus -6]’1 的檢驗位元。因此可以根據所使用的3-aus-6-代碼,利用可能出錯的檢驗位元Pr ’對位元[3-aus -6]’1 的可能的位元錯誤進行錯誤修正。
記憶體1204的輸出端及反檢驗位元轉換器1205的輸出端分別與修正器1206的一個輸入端連接。修正器1206根據所使用的錯誤代碼將[3-aus -6]’1 修正成經過修正的
如果所使用的錯誤代碼可以修正可能出現的錯誤,則下式成立:
位元產生於修正器1206的輸出端。修正器1206的輸出端與反轉換電路1207的輸入端連接,其中反轉換電路1207執行的是轉換電路1201執行的轉換的反轉換。資料位元xcor 產生於反轉換電路1207的輸出端。資料位元xcor 是經修正的資料位元,或是資料位元x (如果沒有出現錯誤的話)。
如果沒有任何錯誤,或是發生的錯誤可以被錯誤代碼C 修正,則下式成立:xcor =x
以上描述的電路配置是透過錯誤代碼進行記憶胞元值的錯誤修正的一個實施例。在這個實施例中,二進制記憶胞元值是一個3-aus-6-代碼的代碼字。這個3-aus-6-代碼的作用是形成記憶胞元值。可以利用一個錯誤代碼進行記憶胞元值的錯誤修正,例如漢明代碼、Hsiao代碼、BCH代碼或其他代碼。
因此資料位元被轉換成記憶胞元值,並為記憶胞元值的位元確定錯誤代碼的檢驗位元。這些檢驗位元同樣也被轉換成記憶胞元值。經轉換的資料位元及經轉換的檢驗位元的記憶胞元值被儲存在記憶體內。讀取記憶體時,會先讀出相當於檢驗位元的記憶胞元值,並將其轉換回檢驗位元。接著利用轉換回來的檢驗位元及錯誤代碼,在一修正器內將相當於資料位元的記憶胞元值修正成經修正的記憶胞元值。接著可以利用反轉換將經修正的相當於資料位元的記憶胞元值轉換成經修正的資料位元。
除了以上描述的記憶胞元值及3-aus-6-代碼外,也可以按相同的方式使用其他的記憶胞元值,例如4-aus-8-代碼的代碼字。
不同於第12圖描述的實施例,第10圖描述的實施例是對資料位元進行錯誤修正。從資料位元確定錯誤代碼的檢驗位元。資料位元及由其確定的檢驗位元一起被轉換成記憶胞元值,並儲存到記憶體內。讀取記憶體時,會先將可能有錯誤的記憶胞元值轉換回可能有錯誤的資料位元及可能有錯誤的檢驗位元,然後利用錯誤代碼修正可能有錯誤的資料位元。範例: 3-aus-6- 代碼
以下將說明一個包含n =6個記憶胞元的分組的例子,並假設這個分組有兩個子群,且各子群均包含n 1 =n 2 =3個記憶胞元。因此在n =6個記憶胞元內可以儲存包含3個二進制值0及3個二進制值1的3-aus-6-代碼字。
個包含3個0及3個1的代碼字,因此有20個不同的值,這些值可以作為3-aus-6-代碼被儲存在6個記憶胞元內。由於24 =16<20,因此可以在6個記憶胞元內儲存4個資料位元。
9 顯示以3-aus-6-代碼字儲存的二進制4位元值在6個記憶胞元S 1S 6 內的一個可能的配置方式。表9的最後一欄的標題是“4位元”,這個欄是以位元方式由小到大填入0至16的4位元值(請比較前面一欄的值)。每一個4位元值正好有這個例子使用的3-aus-6-代碼的一個代碼字。3-aus-6-代碼的特徵是在每一個代碼字內正好會出現3個1(或0)。對n =6個記憶胞元而言,有20-16=4個代碼字是“多餘”的,也就是說有4個代碼字沒有分配到4位元值。在表9的例子中,最後4行在“4位元”欄中出現4個“-”符號的代碼字就是“多餘”的代碼字。 9 偵測最快的讀出電流
13 顯示電路配置的一個例子,包含4個各具有3個輸入端的“或非”門1301至1304、2個各具有2個輸入端的“或非”門1305、1306,以及一個具有複數個輸入端的“與非”門1307。
這個電路配置可以確定對讀出電流的時間積分最快達到預定的門限值Sw 的3個記憶胞元。
種不同的可能方式以3個0及3個1佔用記憶胞元S 1S 6 中的6個記憶胞元。
表9前面16行中被0佔用的記憶胞元的3個輸出端與一個“或非”門的輸入端連接。只有在“或非”門的所有輸入端都是0的情況下,其輸出端才會是1。
表9第1行的值為0的記憶胞元S 4S 5S 6 的3個輸出端連接到“或非”門1301的3個輸入端。表9第2行的值為0的記憶胞元S 3S 5S 6 的3個輸出端連接到“或非”門1302的3個輸入端。表9第14行的值為0的記憶胞元S 1S 3S 5 的3個輸出端連接到“或非”門1303的3個輸入端。表9第15行的值為0的記憶胞元S 1S 2S 5 的3個輸出端連接到“或非”門1304的3個輸入端。
這種連接方式亦應用於第3行至第13行,因此每一行都有一個專屬的“或非”門,且該“或非”門的3個輸入端與在該行的值為0的記憶胞元連接。
在“或非”門1301至1304中,只有所有的輸入端的值都是0的“或非”門的輸出端的值是1。換句話說,在“或非”門1301至1304中,只有按照表9與所屬的代碼字邏輯連接的“或非”門的輸出端的值是1。由於“或非”門1301至1304的輸入端與記憶胞元的連接的組合方式都不一樣(每個代碼字的3個0 的配置都不一樣),因此在任一時間“或非”門1301至1304的輸出端都只有一個值1。
以“或非”門1305及1306為例說明第13圖中邏輯信號的第二平面的邏輯連接:“或非”門1301的輸出端及“或非”門1302的輸出端與“或非”門1305的輸入端連接。“或非”門1303的輸出端及“或非”門1304的輸出端與“或非”門1306的輸入端連接。因此“或非”門1301至1304的每兩個輸出端都與這個第二平面的“或非”門的輸入端連接。
第二平面的“或非”門1305至1306的輸出端分別與“或非”門1307的一個輸入端連接。信號1308產生於“或非”門1307的輸出端。
如果“或非”門的所有輸出端的值都是1,則該“或非”門的輸入端的值才會是0。只要有一個輸入端的值是0,信號1308的值就是1。如前面所述,當記憶胞元內出現3個0時,“或非”門1301至1304中只有一個“或非”門的輸出端的值可以從0變成1。與此相應的,與“或非”門1301至1304中的那個“或非”門連接的“或非”門1305至1306的值會從0變成1。這個值0使信號1308的值變成1。
第13圖的例子有16種不同的可能方式將3個0分配到6個記憶胞元(參照表9)。與此相應的,有16個“或非”門1301至1304。其中每兩個“或非”門的輸出端連接到第二平面的“或非”門1305至1306中的一個“或非”門的輸入端。因此有8個第二平面的“或非”門1305至1306,同時“或非”門1307具有8個相應的輸入端。
可以暫時性探測到(“取樣”) “或非”門1307的輸入端的信號1308。
當第一次探測到信號1308的值是1,可以將信號1308作為連接在記憶胞元S 1S 6 後面的6個門栓的“保持信號”使用。第14圖對此有更詳盡的說明。
14 顯示的電路配置包含6個信號放大器(也稱為知覺放大器或知覺強化器)1401至1406。如前面所述,物理值(i =0…6)從記憶體的(例如6個)記憶胞元被讀出。被讀出的物理值分別被送入信號放大器1401至1406中一個信號放大器。例如物理值可以是讀出電流。
信號放大器1401測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1401的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值Sw ,則信號放大器1401的輸出端在時間點t 的數位值是0。信號放大器1401的輸出端與門栓1407的第一輸入端連接,保持信號1413位於門栓1407的第二輸入端。如果保持信號的值等於0,則門栓1407被透明接通,也就是說,產生於信號放大器1401的輸出端的二進制值位於邏輯電路1414的第一輸入端。如果保持信號的值等於1,則門栓1407被凍結,也就是說,只要保持信號的值等於1,在這個時間點位於門栓1407的第一輸入端的值也會一直留在門栓1407的輸出端。
例如可以在“de.wikipedia.org/wiki/Latch”查詢到門栓的功能,門栓也稱為鎖存器或狀態控制正反器。
邏輯電路1414測定最前面的3個0,也就是說最快出現在門栓1407至1412的輸出端的3個0,並將保持信號1413的值變成1。
同樣的:信號放大器1401測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1402的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值Sw ,則信號放大器1402的輸出端在時間點t 的數位值是0。信號放大器1402的輸出端與門栓1408的第一輸入端連接,保持信號1413位於門栓1408的第二輸入端。門栓1408的輸出端與邏輯電路1414的第二輸入端連接。信號放大器1403測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1403的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值SW ,則信號放大器1403的輸出端在時間點t 的數位值是0。信號放大器1403的輸出端與門栓1409的第一輸入端連接,保持信號1413位於門栓1409的第二輸入端。門栓1409的輸出端與邏輯電路1414的第三輸入端連接。信號放大器1404測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1404的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值Sw ,則信號放大器1404的輸出端在時間點t 的數位值是0。信號放大器1404的輸出端與門栓1410的第一輸入端連接,保持信號1413位於門栓1410的第二輸入端。門栓1410的輸出端與邏輯電路1414的第四輸入端連接。信號放大器1405測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1405的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值Sw ,則信號放大器1405的輸出端在時間點t 的數位值是0。信號放大器1405的輸出端與門栓1411的第一輸入端連接,保持信號1413位於門栓1411的第二輸入端。門栓1411的輸出端與邏輯電路1414的第五輸入端連接。信號放大器1406測定物理值的一個時間積分。如果在時間點t 的時間積分小於一個門限值Sw ,則信號放大器1406的輸出端在時間點t 的數位值是1。如果在時間點t 的時間積分大於一個門限值Sw ,則信號放大器1406的輸出端在時間點t 的數位值是0。信號放大器1406的輸出端與門栓1412的第一輸入端連接,保持信號1413位於門栓1412的第二輸入端。門栓1412的輸出端與邏輯電路1414的第六輸入端連接。
例如曲線圖1415顯示信號放大器1401對時間的讀出電流。信號放大器1401的讀出電流在時間點t 1 達到門限值Sw 。同樣的,第14圖還顯示信號放大器1402至1406的曲線圖1416至1420,這些曲線圖顯示信號放大器1401至1406的第i 個信號放大器達到門限值Sw 的時間點ti
只要讀出電流的積分到時間點ti 仍小於門限值Sw ,信號放大器就會輸出值1;如果讀出電流的積分自時間點ti 起大於門限值Sw ,信號放大器就會輸出值0。
第14圖的例子是在時間點t 測定物理值,其中t 大於t 1t 3t 5 ,以及t 小於t 2t 4t 6 。因此在時間點t ,信號放大器1401、1403及1405的輸出端的值是0,而信號放大器1402、1404及1406的輸出端的值仍然是1。邏輯電路1414是從最前面3個0辨認出這個情況,並使保持信號從0變大1,因此門栓1407至1412被“凍結”。
例如第13圖顯示的電路配置可以實現邏輯電路1414。
[3-aus-6]1、[3-aus-6]2‧‧‧代碼字
、[3-aus-6]’2‧‧‧位元
101、102、103、104、301、302、303、401、402、403、501、502、503、504、WA (0)、WA (1)、WA (2)、WA (3) 、WG (0)、WG (1)、WG (2)‧‧‧機率分佈
105、304、305、404、405、505、506、507‧‧‧重疊區
106‧‧‧區
601、803、901、1003、1204、1502、1602、1702‧‧‧記憶體
602~607‧‧‧比較器
701~706‧‧‧“與”門
708~711‧‧‧“或”門
801、802、902~907、1002、1101、1201、1501、1601、1701‧‧‧轉換電路
1001‧‧‧佔用、編碼器
1004‧‧‧反轉電路
1005‧‧‧修正值產生器
1006‧‧‧錯誤辨識電路
1007‧‧‧異或電路
1008‧‧‧錯誤訊息
1102‧‧‧編碼器
1202‧‧‧位元產生器
1203‧‧‧檢驗位元轉換器
1205‧‧‧反檢驗位元轉換器
1206‧‧‧修正器
1207‧‧‧反轉換電路
1301~1306‧‧‧“或非”門
1037‧‧‧與非”門
1308‧‧‧信號
1415~1420‧‧‧曲線圖
1401~1406‧‧‧信號放大器
1407~1412‧‧‧門栓
1413‧‧‧保持信號
1414‧‧‧邏輯電路
Cod(z(x))‧‧‧資料
e‧‧‧修正值
Pr‧‧‧檢驗位元
R‧‧‧參考值
S 1~Sn ‧‧‧記憶胞元
Sw‧‧‧門限值
t 1t 2t 3t 4t 5t 6ti ‧‧‧時間點
TS TS (m,n)、TS -1(n,m)‧‧‧轉換
TS -1‧‧‧執行反轉
WA WG ‧‧‧讀出值、物理值
xxcor x 1~xk ‧‧‧資料位元
x 1~x 12‧‧‧4-位元-位元組
y’、y 12y 13y 14y 23y24 y34 z 1~z 18‧‧‧二進制值
y=Cod(x)‧‧‧位元(或位元組)
z(y)‧‧‧數位值
z(x)、z’(y) ‧‧‧值
以下將配合圖式及實施例對以上述之本發明的特性、特徵及優點做進一步的說明。為了使圖式簡單化,凡是相同或相同作用的元件在各圖式中均以相同的元件符號標示。 其中: 第1a圖:讀出之物理值的機率分佈,其中一個參考值位於機率分佈曲線之間; 第1b圖:讀出之物理值的機率分佈,其中與第1a圖不同的是,機率分佈曲線有部分重疊; 第2a圖:一個顯示從記憶胞元讀出的多個物理值的示意圖; 第2b圖:一個具有多個時間點的示意圖,其中每一個時間點均相當於第2a圖顯示的一個物理值; 第3圖:記憶胞元之物理值WG 的機率分佈示意圖; 第4圖:從記憶體讀出的值的機率分佈示意圖; 第5圖:從記憶體讀出的值0、1、2及3的4個機率分佈,其中4個機率分佈有3個重疊區; 第6圖:一具有4個記憶胞元的記憶體,其中從記憶胞元讀出物理值,並使用多個比較器以成對的方式比較物理值; 第7圖:一個電路佈置,根據第6圖的比較器的值利用多個邏輯閘決定相應的記憶胞元的佔用; 第8圖:一個示意圖,顯示資料位元被轉換、被儲存在記憶體之記憶胞元內,以及記憶胞元被讀出,然後經由反轉換被轉換回資料位元; 第9圖:一個示意圖,顯示多個資料位元群組被轉換、儲存、以及在被讀出後被轉換回資料位元; 第10圖:顯示電路配置的一個例子,此電路配置可以執行錯誤辨識或同時執行錯誤辨識及錯誤修正,其中資料位元經由一轉換電路被轉換成儲存在記憶體的記憶胞元內的儲存位元; 第11圖:另一種電路配置,此電路配置可以執行錯誤辨識或同時執行錯誤辨識及錯誤修正; 第12圖:如第11圖之電路配置的一種變化方式,可執行反轉換及決定要修正的資料位元; 第13圖:電路配置的一個例子,包含複數個邏輯閘,其作用是確定複數個門栓的保持信號; 第14圖:電路配置的一個例子,用於確定讀出6個記憶胞元時,最先出現的3個最快的0,其中利用如第13圖之電路配置產生的保持信號,以控制多個門栓; 第15圖:一個示意圖,顯示如何經由轉換電路將資料位元轉換成記憶胞元值,並儲存到記憶體的記憶胞元內; 第16圖:第15圖之電路配置的一個實際的例子,在第16圖的例子中,n =K =6,K =3,n 1 =n 2 =n 3 =2; 第17圖:一個示意圖,顯示如何將4個資料位元x 1x 2x 3x 4 轉換成4個記憶胞元值z 1z 2z 3z 4

Claims (22)

  1. 一種處理位元的方法,其特徵為: - 將m 個要儲存的位元轉換成n 1 -,…,nK -aus-n -代碼的一個代碼字的n 個記憶胞元值; - 其中n 1 代表第一記憶胞元值的第一個數量,nK 代表第K 個記憶胞元值的第K 個數量; - 其中第一記憶胞元值具有第一個值,第K 個記憶胞元值具有第K 個值; - 其中K 值是彼此不同的; - 其中記憶胞元值的數量n 是由n =n 1 +…+nK 計算出來的; - 記憶胞元值儲存在一個記憶體內。
  2. 如申請專利範圍第1項的方法,其中要儲存的位元都是二進制位元。
  3. 如前述申請專利範圍中任一項的方法,其中K =2,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -aus-n -代碼,而且要儲存的位元被轉換成n 1 -,n 2 -aus-n -代碼的一個代碼字的n 個記憶胞元值,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,其中第一個值不同於第二個值。
  4. 如申請專利範圍第1項至第2項的方法,其中K =3,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -,n 3 -aus-n -代碼,而且要儲存的位元被轉換成n 1 -,n 2 -,n 3 -aus-n -代碼的一個代碼字的n 個記憶胞元值,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,n 3 個第三個記憶胞元值具有彼此相同的第三個值,其中第一個值、第二個值,以及第三個值都是彼此不同的值。
  5. 如前述申請專利範圍中任一項的方法,其中將要儲存的位元集合成一個群組,並將複數個資料位元轉換成要儲存的位元的群組,並儲存起來。
  6. 如前述申請專利範圍中任一項的方法,其中記憶體是一種可定址的記憶體。
  7. 如前述申請專利範圍中任一項的方法,其中記憶胞元值的數量小於要儲存的位元數量的兩倍。
  8. 如前述申請專利範圍中任一項的方法,其中每一個記憶胞元儲存一個記憶胞元值。
  9. 如前述申請專利範圍中任一項的方法,其中要儲存的位元包含一個錯誤代碼的資料位元及檢驗位元,其中檢驗位元是用於以錯誤代碼進行錯誤修正。
  10. 如前述申請專利範圍中任一項的方法,其中 - 對記憶胞元值而言,檢驗位元是由一個錯誤代碼決定; - 檢驗位元被轉換成n 1 -,…,nK -aus-n -代碼的至少一個代碼字,並被儲存在記憶體內。
  11. 如前述申請專利範圍中任一項的方法,其中要儲存的位元包含錯誤代碼的一個代碼字的至少一個位元。
  12. 如前述申請專利範圍中任一項的方法,其中要儲存的m 個位元包含記憶體位址的至少一個位址位元,或包含由記憶體位址的至少一個位址位元導出的位元。
  13. 如前述申請專利範圍中任一項的方法,其中記憶體包含下列記憶體類型中的至少一種記憶體類型: - 快取記憶體, - 暫存器或暫存器陣列, - 快閃記憶體, - MRAM, - SRAM, - RE-RAM, - PC-RAM, - CB-RAM, - 多位元記憶體, - 多級記憶體。
  14. 如前述申請專利範圍中任一項的方法,其中 - 物理值是由n 個記憶胞元決定,其中n 至少是3; - 物理值至少有一部分被相互比較; - 根據相互比較的物理值將K 個不同的數位記憶胞元值配屬到n 個記憶胞元; - 將一個n 1 -,…,nK -aus-n -代碼的一個代碼字配屬到按上述方式獲得的記憶胞元值。
  15. 如申請專利範圍第14項的方法,其中 - 物理值至少有一部分被相互比較,由此決定物理值的排列順序; - 根據物理值的排列順序將K 個不同的數位記憶胞元值配屬到n 個記憶胞元。
  16. 如申請專利範圍第14項或第15項的方法,其中K =2,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -aus-n -代碼,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,其中第一個值不同於第二個值。
  17. 如申請專利範圍第14項或第15項的方法,其中K =3,因此n 1 -,…,nK -aus-n -代碼是一個n 1 -,n 2 -,n 3 -aus-n -代碼,其中n 1 個第一記憶胞元值具有彼此相同的第一個值,n 2 個第二記憶胞元值具有彼此相同的第二個值,n 3 個第三個記憶胞元值具有彼此相同的第三個值,其中第一個值、第二個值,以及第三個值都是彼此不同的值。
  18. 資料處理裝置,此裝置具有一個處理單元,其作用是: - 將m 個要儲存的位元轉換成n 1 -,…,nK -aus-n -代碼的一個代碼字的n 個記憶胞元值; - 其中n 1 代表第一記憶胞元值的第一個數量,nK 代表第K 個記憶胞元值的第K 個數量; - 其中第一記憶胞元值具有第一個值,第K 個記憶胞元值具有第K 個值; - 其中K 值是彼此不同的; - 其中記憶胞元值的數量n 是由n =n 1 +…+nK 計算出來的; - 將記憶胞元值儲存在一個記憶體內。
  19. 如申請專利範圍第18項的裝置,其中處理單元的作用是: - 根據n 個記憶胞元決定物理值,其中n 至少是3; - 使至少一部分物理值相互比較; - 根據相互比較的物理值將K 個不同的數位記憶胞元值配屬到n 個記憶胞元; - 將一個n 1 -,…,nK -aus-n -代碼的一個代碼字配屬到按上述方式獲得的記憶胞元值。
  20. 如申請專利範圍第18項的裝置,其中處理單元的作用是: - 使至少一部分物理值相互比較,由此決定至少一部分物理值的排列順序; - 根據物理值的排列順序將K 個不同的數位記憶胞元值配屬到n 個記憶胞元。
  21. 電腦程式產品,可以直接存在數位電腦的記憶體內,其包含可以執行如申請專利範圍第1項至第17項中任一項的方法的各個步驟的程式碼。
  22. 電腦可讀的儲存媒介,其包含電腦可執行的指示,以使電腦執行如申請專利範圍第1項至第17項中任一項的方法的各個步驟。
TW107100237A 2018-01-03 2018-01-03 記憶體之記憶胞元資料處理 TW201931357A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW107100237A TW201931357A (zh) 2018-01-03 2018-01-03 記憶體之記憶胞元資料處理

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW107100237A TW201931357A (zh) 2018-01-03 2018-01-03 記憶體之記憶胞元資料處理

Publications (1)

Publication Number Publication Date
TW201931357A true TW201931357A (zh) 2019-08-01

Family

ID=68315936

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107100237A TW201931357A (zh) 2018-01-03 2018-01-03 記憶體之記憶胞元資料處理

Country Status (1)

Country Link
TW (1) TW201931357A (zh)

Similar Documents

Publication Publication Date Title
TWI664639B (zh) 記憶體之記憶胞元資料處理
US8732560B2 (en) Method and device for correction of ternary stored binary data
KR0142277B1 (ko) 메모리 시스템
TWI517173B (zh) 更新可靠度資料之設備及方法
JP6145220B2 (ja) アナログメモリセルにおけるセル当り非整数個のビットを用いたデータ記憶の管理
JPH11283396A (ja) メモリ装置
Wang et al. Reliable MLC NAND flash memories based on nonlinear t-error-correcting codes
US6438726B1 (en) Method of dual use of non-volatile memory for error correction
KR100272153B1 (ko) 3치기억 반도체기억시스템
JP5284069B2 (ja) メモリシステム及びメモリアクセス方法
US6360347B1 (en) Error correction method for a memory device
JP2011141914A (ja) Nand型フラッシュメモリの入出力制御方法及び装置
TW201931357A (zh) 記憶體之記憶胞元資料處理
JP2017107620A (ja) 半導体装置及び不揮発メモリ
US6584594B1 (en) Data pre-reading and error correction circuit for a memory device
JP4099844B2 (ja) メモリ装置
US20150019932A1 (en) Storage device, crc generation device, and crc generation method
EP1192544B1 (en) Error correction circuit and method for a memory device
US6088261A (en) Semiconductor storage device
JPH11212876A (ja) 符号化方法およびそれを利用したメモリ装置
US11847342B2 (en) Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US10514852B2 (en) Processing data in memory cells of a memory
JPH11213693A (ja) メモリ装置
JPH0743959B2 (ja) 誤り訂正機能付半導体メモリ
TW202211219A (zh) 記憶體存取方法