矩陣存儲存活時間
稀疏矩陣
設矩陣A mn 中有s個非零元素 若s遠遠小滑賀於矩陣元素的總數(即s< <m×n),則稱a為稀疏矩陣。 p=""> </m×n),則稱a為稀疏矩陣。>
1、稀疏矩陣的壓縮存儲
為了節省存儲單元,可只存儲非零元素。由於非零元素的分布一般是沒有規律的,因此在存儲非零元素的同時,還必須存儲非零
元素所在的行號、列號,才能迅速確定一個非零元素是矩陣中的哪一個元素。稀疏矩陣的壓縮存儲會失去隨機存取功能。
其中每一個非零元素所在的行號、列號和值組成一個三元組(i,j,a ij ),並由此三元組惟一確定。
稀疏矩陣進行壓縮存儲通常有兩類方法:順序存儲和鏈式存儲。鏈式存儲方法【參見參考書目】。
2、三元組表
將表示稀疏矩陣的非零元素的三元組按行優先(或列優先)的順序排列(跳過零元素),並依次存放在向量中,這種稀疏矩陣的順序
信輪派存儲結構稱為三元組表。
注意:
以下的討論中,均假定三元組是按行優先順序排列的。
【例】下圖(a)所示的稀疏矩陣A的三元組表表示見圖(b)
(1)三元組表的類型說明
為了運算方便,將矩陣的總行數、總列數及非零元素的總數均作為三元組表的屬性進行描述。.WINGwIT.其類型描述為:
#define MaxSize 10000 //由用戶定義
typedef int DataType; //由用戶定義
typedef struct { //三元組
int i,j;//非零元的行、列號
DataType v; //非零元的值
}TriTupleNode;
typedef struct{ //三元組表
TriTupleNode data[MaxSize]; //三元組表空間
int m,n,t; //矩陣的行數、列數及非零元個數
}TriTupleTable;
(2) 壓縮桐雀存儲結構上矩陣的轉置運算
一個m×n的矩陣A,它的轉置矩陣B是一個n×m的矩陣,且:
A[i][j]=B[j][i],0≤i <m,0≤j<n, p=""> </m,0≤j<n,>
即A的行是B的列,A的列是B的行。
【例】下圖中的B和上圖中的A互為轉置矩陣。
①三元組表表示的矩陣轉置的思想方法
第一步:根據A矩陣的行數、列數和非零元總數確定B矩陣的列數、行數和非零元總數。
第二步:當三元組表非空(A矩陣的非零元不為0)時,根據A矩陣三元組表的結點空間data(以下簡稱為三元組表),將A的三
元組表a->data置換為B的三元組表b->data。
②三元組表的轉置
方法一:簡單地交換a->data中i和j中的內容,得到按列優先順序存儲倒b->data;再將b->data重排成按行優先順序的三元組表。
方法二:由於A的列是B的行,因此,按a->data的列序轉置,所得到的轉置矩陣B的三元組表b->data必定是按行優先存放的。
按這種方法設計的演算法,其基本思想是:對A中的每一列col(0≤col≤a->n-1),通過從頭至尾掃描三元組表a->data,找出所有
列號等於col的那些三元組,將它們的行號和列號互換後依次放人b->data中,即可得到B的按行優先的壓縮存貯表示。具體實現參見
【 動畫演示 】
③具體演算法:
void TransMatrix(TriTupleTable *b,TriTupleTable *a)
{//*a,*b是矩陣A、B的三元組表表示,求A轉置為B
int p,q,col;
b->m=a->n; b->n=a->m; //A和B的行列總數互換
b->t=a->t; //非零元總數
if(b->t<=0)
Error("A=0"); //A中無非零元,退出
q=0;
for(col=0;coln;col++) //對A的每一列
for(p=0;pt;p++) //掃描A的三元組表
if(a->data[p].j==col){ //找列號為col的三元組
b->data[q).i=a->data[p].j;
b->data[q].j=a->data[p].i;
b->data[q].v=a->data[p].v;
q++;
}
} //TransMatrix
④演算法分析
該演算法的時間主要耗費在col和p的二重循環上:
若A的列數為n,非零元素個數t,則執行時間為O(n×t),即與A的列數和非零元素個數的乘積成正比。
通常用二維數組表示矩陣時,其轉置演算法的執行時間是O(m×n),它正比於行數和列數的乘積。
由於非零元素個數一般遠遠大於行數,因此上述稀疏矩陣轉置演算法的時間大於通常的轉置演算法的時間。
lishixin/Article/program/sjjg/201311/23897
『貳』 隨機存取存儲器詳細資料大全
隨機存取存儲器 (英語: R andom A ess M emory,縮寫: RAM ),也叫 主存 ,是與CPU直接交換數據的內部存儲器。[1]它可以隨時讀寫(刷新時除外,見下文),而且速度很快,通常作為作業系統或其他正在運行中的程式的臨時數據存儲纖老介質。
主存(Main memory)即計算機內部最主要的存儲器,用來載入各式各樣的程式與數據以供CPU直接運行與運用。由於DRAM的性價比很高,且擴展性也不錯,是現今一般計算機主存的最主要部分。2014年生產計算機所用的主存主要是DDR3 SDRAM,而2016年開始DDR4 SDRAM逐漸普及化,筆電廠商如華碩及宏碁開始在筆電以DDR4存儲器取代DDR3L。
基本介紹
- 中文名 :隨機存取存儲器
- 外文名 :random aess memory
- 存儲原理 :由觸發器存儲數據
- 單元結構 :六管NMOS或OS構成
- 簡稱 :RAM
特點
隨機存取 所謂「隨機存取」,指的是當存儲器中的數據被讀取或寫入時,所需要的時間與這段信息所在的位置或所寫入的位置無關。相對的,讀取或寫入順序訪問(Sequential Aess)存儲設備中的信息時,其所需要的時間與位置就會有關系。它主要用來存放作業系統、各種應用程式、數據等。 易失性 當電源關閉時RAM不能保留數據。如果需要保存數據,就必須把它們寫入一個長期的存儲設備中(例如硬碟)。RAM和ROM相比,兩者的最大區別是RAM在斷電以後保存在上面的數據會自動消失,而ROM不會自動消失,可以長時間斷電保存。 靜態隨機存取存儲器 對靜電敏感 正如其他精細的積體電路,隨機存取存儲器對環境的靜電荷非常敏感。靜電會干擾存儲器內電容器的電荷,引致數據流失,甚至燒壞電路。故此觸碰隨機存取存儲器前,應先用手觸摸金屬接地。 訪問速度 現代的隨機存取存儲器幾乎是所有訪問設備中寫入和讀取速度最快的,存取延遲和其他涉及機械運作的存儲設備相比,也顯得微不足道。 筆記本電腦記憶體 需要刷新(再生) 現代的隨機存取存儲器依賴電容器存儲數據。電容器充滿電後代表1(二進制),未充電的代表0。由於電容器或多或少有漏電的情形,若不作特別處理,數據會漸漸隨時間流失。刷新是指定期讀取電容激豎旦器的狀態,然後按照原來的狀態重新為電容器充電,彌補流失了的電荷。需要刷新正好解釋了隨機存取存儲器的易失性。類別
根據存儲單元的工作原理不同, RAM分為靜態RAM和動態RAM。 靜態隨機存儲器(SRAM) 靜態存儲單元是在靜態觸發器的基礎上附加門控管而構成的。因此,它是靠觸發器的自保功能存儲數據的。 動態隨機存儲器(DRAM)動態RAM的存儲矩陣由動態MOS存儲單元組成。動態MOS存儲單元利用MOS管的柵極電容來存儲信息,但由於柵極電容的容量很小,而漏電流又不可能絕對等於0,所以電荷保存的時間有限。為了避免存儲信息的丟失,必須定時地給電容補充漏掉的電荷。通常把這種操作稱為「刷新」或「再生」,因此DRAM內部要有刷新控制電路,其操作也比靜態RAM復雜。盡管如此,由於DRAM存儲單元的結構能做得非常簡單,所用元件少,功耗低,已成為大容量RAM的主流產品。
組成
RAM電路由地址解碼器、存儲矩陣和讀寫控制電路三部分組成,如圖所明擾示。 圖1 存儲矩陣由觸發器排列而成,每個觸發器能存儲一位數據(0或1)。通常將每一組存儲單元編為一個地址,存放一個「字」;每個字的位數等於這一組單元的數目。存儲器的容量以「字數×位數」表示。地址解碼器將每個輸入的地址代碼譯成高(或低)電平信號,從存儲矩陣中選中一組單元,使之與讀寫控制電路接通。在讀寫控制信號的配合下,將數據讀出或寫入。區別
唯讀存儲器
ROM-read only memory唯讀存儲器 ①簡單地說,在計算機中,RAM 、ROM都是數據存儲器。RAM 是隨機存取存儲器,它的特點是易揮發性,即掉電失憶。ROM 通常指固化存儲器(一次寫入,反復讀取),它的特點與RAM 相反。ROM又分一次性固化、光擦除和電擦除重寫三種類型。舉個例子來說也就是,如果突然停電或者沒有保存就關閉了檔案,那麼ROM可以隨機保存之前沒有儲存的檔案但是RAM會使之前沒有保存的檔案消失。 動態隨機存取存儲器記憶體
在計算機的組成結構中,有一個很重要的部分,就是存儲器。存儲器是用來存儲程式和數據的部件,對於計算機來說,有了存儲器,才有記憶功能,才能保證正常工作。存儲器的種類很多,按其用途可分為主存儲器和輔助存儲器,主存儲器又稱記憶體儲器(簡稱記憶體),輔助存儲器又稱外存儲器(簡稱外存)。外存通常是磁性介質或光碟,像硬碟,軟碟,磁帶,CD等,能長期保存信息,並且不依賴於電來保存信息,但是由機械部件帶動,速度與CPU相比就顯得慢的多。記憶體指的就是主機板上的存儲部件,是CPU直接與之溝通,並用其存儲數據的部件,存放當前正在使用的(即執行中)的數據和程式,它的物理實質就是一組或多組具備數據輸入輸出和數據存儲功能的積體電路,記憶體只用於暫時存放程式和數據,一旦關閉電源或發生斷電,其中的程式和數據就會丟失。 從一有計算機開始,就有記憶體。記憶體發展到今天也經歷了很多次的技術改進,從最早的DRAM一直到FPMDRAM、EDODRAM、SDRAM等,記憶體的速度一直在提高且容量也在不斷的增加。今天,伺服器主要使用的是什麼樣的記憶體呢?IA架構的伺服器普遍使用的是REGISTEREDECCSDRAM。 快速周期隨機存取存儲器 既然記憶體是用來存放當前正在使用的(即執行中)的數據和程式,那麼它是怎麼工作的呢?我們平常所提到的計算機的記憶體指的是動態記憶體(即DRAM),動態記憶體中所謂的「動態」,指的是當我們將數據寫入DRAM後,經過一段時間,數據會丟失,因此需要一個額外設電路進行記憶體刷新操作。具體的工作過程是這樣的:一個DRAM的存儲單元存儲的是0還是1取決於電容是否有電荷,有電荷代表1,無電荷代表0。但時間一長,代表1的電容會放電,代表0的電容會吸收電荷,這就是數據丟失的原因。刷新操作定期對電容進行檢查,若電量大於滿電量的1/2,則認為其代表1,並把電容充滿電;若電量小於1/2,則認為其代表0,並把電容放電,藉此來保持數據的連續性。存儲單元
靜態存儲單元(SRAM) ●存儲原理:由觸發器存儲數據 ●單元結構:六管NMOS或OS構成 ●優點:速度快、使用簡單、不需刷新、靜態功耗極低;常用作Cache ●缺點:元件數多、集成度低、運行功耗大 ●常用的SRAM集成晶片:6116(2K×8位), 6264 (8K×8位), 62256 (32K×8位),2114(1K×4位) 動態存儲單元(DRAM) ●存貯原理:利用MOS管柵極電容可以存儲電荷的原理,需刷新(早期:三管基本單元;之後:單管基本單元) ●刷新(再生):為及時補充漏掉的電荷以避免存儲的信息丟失,必須定時給柵極電容補充電荷的操作 ●刷新時間:定期進行刷新操作的時間。該時間必須小於柵極電容自然保持信息的時間(小於2 ms )。 ●優點: 集成度遠高於SRAM、功耗低,價格也低 ●缺點:因需刷新而使外圍電路復雜;刷新也使存取速度較SRAM慢,所以在計算機中,DRAM常用於作主存儲器。 盡管如此,由於DRAM存儲單元的結構簡單,所用元件少,集成度高,功耗低,所以已成為大容量RAM的主流產品。
『叄』 對稱矩陣的壓縮存儲
#include<iostream>
using namespace std;
int main()
{
int temp[1000];
int t[500][500];
int arry1[1000],arry2[1000];
int n;
scanf("%d",&n);
int i;
int m;
m=n*n+n;
m=m/2;
for(i=1;i<=m;i++)
{
scanf("%d",&arry1[i]);
}
for(i=1;i<=m;i++)
{
scanf("%d",&arry2[i]);
}
for(i=1;i<=m;i++)
{
temp[i]=arry1[i]+arry2[i];
}
int j;
int k;
for(i=1,k=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{ t[i][j]=temp[k];
k++;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j>i)
printf("%d",t[j][i]);
else
printf("%d",t[i][j]);
if(j!=n)
printf(" ");
}
printf("\n");
}
return 0;
}
『肆』 計算機在斷電或關機後,什麼儲存器中的數據會丟失
計算機在斷電或關機後,隨機存取存儲器中的數據會丟失。
隨機存取存儲器,是與CPU直接交換數據的內部存儲器,也叫主存(內存)。它可以隨時讀寫,而且速度很快,通常作為操作系統或其他正在運行中的程序的臨時數據存儲媒介。
存儲單元的內容可按需隨意取出或存入,且存取的速度與存儲單元的位置無關的存儲器。這種存儲器在斷電時將丟失其存儲內容,故主要用於存儲短時間使用的程序。
(4)矩陣存儲存活時間擴展閱讀
RAM由存儲矩陣、地址解碼器、讀/寫控制器、輸入/輸出、片選控制等幾部分組成。
(1)存儲矩陣:用來存儲信息,稱為存儲矩陣。
(2)地址解碼器:將寄存器地址所對應的二進制數譯成有效的行選信號和列選信號,從而選中該存儲單元.
(3)讀/寫控制器:訪問RAM時,對被選中的寄存器進行讀操作還是進行寫操作,是通過讀寫信號來進行控制的。讀操作時,被選中單元的數據經數據線、輸入/輸出線傳送給CPU(中央處理單元);寫操作時,CPU將數據經輸入/輸岀線、數據線存入被選中單元。
(4)輸入/輸出:讀出時它是輸岀端,寫入時它是輸入端,一線兩用。由讀/寫控制線控制。輸入/輸出端數據線的條數,與一個地址中所對應的寄存器位數相同,也有的RAM晶元的輸入/輸出端是分開的。
(5)片選控制:由於受RAM的集成度限制。一台計算機的存儲器系統往往由許多RAM組合而成。CPU訪問存儲器時,一次只能訪問RAM中的某一片(或幾片),即存儲器中只有一片(或幾片)RAM中的一個地址接受CPU訪問,與其交換信息,而其他片RAM與CPU不發生聯系,片選就是用來實現這種控制的。