⑴ 求下面數據結構試題的答案。。。
全國2008年10月高等教育自學考試
數據結構試題
課程代碼:02331
一、單項選擇題(本大題共15小題,每小題2分,共30分)
在每小題列出的四個備選項中只有一個是最符合題目要求的,請將其代碼填寫在題後的括弧內。錯選、多選或未選均無分。
1.如果在數據結構中每個數據元素尺腔只可能有一個直接前驅,但可以有多個直接後繼,則該結構是( )
A. 棧 B. 隊列
C. 樹 D. 圖
2.下面程序段的時間復雜度為( )
for (i=0; i<m; i++)
for (j=0; j<n; j++)
A[i][j]=i*j;
A. O (m2) B. O (n2)
C. O (m*n) D. O (m+n)
3.在頭指針為head的非空單循環鏈表中,指針p指向尾結點,下列關系成立的是( )
A. p->next==head B. p->next->next==head
C. p->next==NULL D. p==head
4.若以S和X分別表示進棧和退棧操作,則對初始狀陵沒衫態為空的棧可以進行的棧操作系列是( )
A. SXSSXXXX B. SXXSXSSX
C. SXSXXSSX D. SSSXXSXX
5.兩個字元串相等的條件是( )
A. 串的長度相等 B. 含有相同的字元集
C. 都是非空串 D. 串的長度相等且對應的字元相同
6.如果將矩陣An×n的每一列看成一個子表,整個矩陣看成是一個廣義表L,即L=((a11,a21,…,an1),( a12,a22,…,an2),…,(a1n,a2n,…,ann)),並且可以通過求表頭head和求表尾tail的運算求察巧取矩陣中的每一個元素,則求得a21的運算是( )
A. head (tail (head (L))) B. head (head(head(L)))
C. tail (head (tail (L))) D. head (head (tail (L)))
7.已知一棵含50個結點的二叉樹中只有一個葉子結點,則該樹中度為1的結點個數為( )
A. 0 B. 1
C. 48 D. 49
8.在一個具有n個頂點的有向圖中,所有頂點的出度之和為Dout ,則所有頂點的入度之和為( )
A. Dout B. Dout-1
C. Dout+1 D. n
9.如圖所示的有向無環圖可以得到的拓撲序列的個數是( )
A. 3 B. 4
C. 5 D. 6
10.如圖所示的帶權無向圖的最小生成樹的權為( )
A. 51 B. 52
C. 54 D. 56
11.對長度為n的關鍵字序列進行堆排序的空間復雜度為( )
A. O(log2n) B. O(1)
C. O(n) D. O(n*log2n)
12.已知用某種排序方法對關鍵字序列(51,35,93,24,13,68,56,42,77)進行排序時,前兩趟排序的結果為
(35,51,24,13,68,56,42,77,93)
(35,24,13,51,56,42,68,77,93)
所採用的排序方法是( )
A. 插入排序 B. 冒泡排序
C. 快速排序 D. 歸並排序
13.已知散列表的存儲空間為T[0..18],散列函數H(key)=key%17,並用二次探測法處理沖突。散列表中已插入下列關鍵字:T[5]=39,T[6]=57和T[7]=7,則下一個關鍵字23插入的位置是( )
A. T[2] B. T[4]
C. T[8] D. T[10]
14.適宜進行批量處理的文件類型是( )
A. 順序文件 B. 索引順序文件
C. 散列文件 D. 多關鍵字文件
15.VSAM文件的索引結構為( )
A. B+樹 B. 二叉排序樹
C. B-樹 D. 最優二叉樹
二、填空題(本大題共10小題,每小題2分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
16.如果某演算法對於規模為n的問題的時間耗費為T(n)=3n3,在一台計算機上運行時間為t秒,則在另一台運行速度是其64倍的機器上,用同樣的時間能解決的問題規模是原問題規模的 倍。
17.將兩個長度分別為m和n的遞增有序單鏈表,歸並成一個按元素遞減有序的單鏈表,可能達到的最好的時間復雜度是 。
18.已知循環隊列的存儲空間大小為m,隊頭指針front指向隊頭元素,隊尾指針rear指向隊尾元素的下一個位置,則在隊列不滿的情況下,隊列的長度是 。
19.字元串「sgabacbadfgbacst」 中存在有 個與字元串「ba」相同的子串。
20.假設以列優先順序存儲二維數組A[5][8],其中元素A[0][0]的存儲地址為LOC(a00),且每個元素佔4個存儲單元,則數組元素A[i][j]的存儲地址為 。
21.假設用<x,y>表示樹的邊(其中x是y的雙親),已知一棵樹的邊集為
,該樹的度是 。
22.n個頂點且含有環路的無向連通圖中,至少含有 條邊。
23.在一般情況下用直接插入排序、選擇排序和冒泡排序的過程中,所需記錄交換次數最少的是 。
24.和二分查找相比,順序查找的優點是除了不要求表中數據元素有序之外,對 結構也無特殊要求。
25.順序文件中記錄存放的物理順序和 順序一致。
三、解答題(本大題共4小題,每小題5分,共20分)
26.由森林轉換得到的對應二叉樹如圖所示,寫出原森林中第三棵樹的前序序列和後序序列。
前序序列:
後序序列:
27.圖的鄰接表的類型定義如下所示:
#define MaxVertexNum 50
typedef struct node {
int adjvex;
struct node *next;
}EdgeNode;
typedef struct {
VertexType vertex;
EdgeNode *firstedge;
}VertexNode;
typedef VertexNode AdjList[MaxVertexNum];
typedef struct {
AdjList adjlist;
int n, e;
}ALGraph;
為便於刪除和插入圖的頂點的操作,可將鄰接表的表頭向量定義為鏈式結構,兩種定義的存儲表示實例如下圖所示,請寫出重新定義的類型說明。
題27圖
28.某類物品的編號由一個大寫英文字母及2位數字(0..9)組成,形如E32。運用基數排序
對下列物品編號序列進行按字典序的排序,寫出每一趟(分配和收集)後的結果。
E13,A37,F43,B32,B47,E12,F37,B12
第一趟:
第二趟:
第三趟:
29.(1)畫出對表長為13的有序順序表進行二分查找的判定樹;
(2)已知關鍵字序列為(12,14,16,21,24,28,35,43,52,67,71,84,99),寫出在該序列中二分查找37時所需進行的比較次數。
(1)
(2)
四、演算法閱讀題(本大題共4小題,每小題5分,共20分)
30.已知線性表的存儲結構為順序表,閱讀下列演算法,並回答問題:
(1)設線性表L=(21,-7,-8,19,0,-11,34,30,-10),寫出執行f30(&L)後的L狀態;
(2)簡述演算法f30的功能。
void f30 (SeqList *L) {
int i,j;
for (i=j=0;i<L->length; i++)
if(L->data[i]>=0){
if(i!=j)L->data[j]=L->data[i];
j++;
}
L->length=j;
}
(1)
(2)
31.閱讀下列演算法,並回答問題:
(1)Q、Q1和Q2都是隊列結構,設隊列Q=(1,0,-5,2,-4,-6,9),其中1為隊頭元素,寫出執行f31 (&Q,&Q1,&Q2)之後隊列Q、Q1和Q2的狀態;
(2)簡述演算法f31的功能。
(註:lnitQueue、EnQueue、DeQueue和QueueEmpty分別是隊列初始化、入列、出隊和判隊空的操作)
void f31 (Queue*Q, Queue*Q1, Queue*Q2) {
int e;
lnitQueue (Q1);
lnitQueue (Q2);
while (!QueueEmpty (Q)) {
e=DeQueue (Q);
if (e>=0) EnQueue (Q1,e);
else EnQueue (Q2,e)
}
}
(1)
(2)
32.閱讀下列演算法,並回答問題:
(1)假設串由合法的英文字母和空格組成,並以』\0』作結束符。設串s=」⊔⊔|⊔am⊔a⊔⊔⊔student」(⊔表示空格符),寫出f32(s)的返回值;
(2)簡述演算法f32的功能。
int f32 (char*s){
int i, n, inword;
n=inword=0;
for (i=0;s[i]!=』\0』;i++)
if (s[i]!=』⊔』&& inword==0){
inword=1;
n++;
}
else if (s[i]==』⊔』&& inword==1)
inword=0;
return n;
}
(1)
(2)
33.閱讀下列對正整數關鍵字序列L操作的演算法,並回答問題:
(1)設L=(28,19,27,49,56,12,10,25,20,50),寫出f33 (L,4)的返回值;
(2)簡述函數f33的功能。
int Partition (SeqList*L, int low, int high);
‖對L[low..high]做劃分,返回基準記錄的位置,並使左部的關鍵字
‖都小於或等於基準記錄的關鍵字,右部的關鍵字都大於基準記錄的關鍵字
int f33 (SeqList L, int k){
int low, high, pivotpos;
low=1;
high=L.length;
if (k<low || k>high)
return-1;
do {
pivotpos=Partition (&L, low, high);‖調用快速排序的劃分演算法
if (pivotpos<k)
low=pivotpos+1;
else if (pivotpos>k)
high=pivotpos-1;
}while (pivotpos!=k);
return L.data [pivotpos];
}
(1)
(2)
五、演算法設計題(本題10分)
34.二叉排序樹的類型定義如下:
typedef struct BSTNode {‖ 二叉排序樹的結點結構
int data; ‖數據域
struct BSTNode *lchild, *rchild; ‖左、右孩子指針
}BSTNode,*BSTree;
設計遞歸演算法,統計一棵二叉排序樹T中值小於a的結點個數。
⑵ STC89C51與AT89C51的區別
1、STC89C51在AT89C51的基礎上加入了AD數模轉換,集成程度更高;AT89C51是老式的255位單片機
2、STC89C51是宏晶公司生產;AT89C51是Atmel公司生產。
3、STC89C51可以在線編程,即有ISP功能;而AT89C51必須通過編程器編程。
4、STC89C51具有6T模式,速度更快;AT89C51是12T模式,速度較慢。
5、STC89C51集成了512或1280位元組的RAM ,而AT89C51沒有。
6、STC89C51有三個16位定時器;AT89C51隻有兩個(AT89C52是三個)。
7、STC89C51的工作電壓是5.5V~3.3V;AT89C51的工作電壓是5.25V~4.75V。
8、STC89C51用戶的程序空間從4K到64K不等,可以選擇;而AT89C51用戶的程序空間是4K。
擴展毀拿資料:
1、STC89C51的特點:
(1)增強型1T 流水線/精簡指令集結構8051 CPU。
(2)(5V單片機)/ 2.0V-3.8V 。
(3)時鍾頻率0~35MHz,相當於普通8051 的0~420MHz,實際工作頻率可達48MHz。
(4)用戶應用程序空間12K / 10K / 8K / 6K / 4K / 2K位元組。
(5)片上集成512 位元組RAM。
(6)通用I/O 口(27/23個),復位後為:准雙向口/ 弱上拉(普通8051 傳統鎮余冊I/O 口)可設置成四種模式:准雙向口/ 弱上拉,推御宏挽/ 強上拉,僅為輸入/高阻,開漏。每個I/O 口驅動能力均可達到20mA,但整個晶元最大不得超過55mA。
(7)ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器。可通過串口(P3.0/P3.1)直接下載用戶程序,數秒即可完成一片。
(8)有2個16 位定時器/ 計數器
2、AT89C51的主要特性:
(1)與MCS-51 兼容
(2)4K位元組可編程FLASH存儲器
(3)壽命:1000寫/擦循環
(4)數據保留時間:10年
(5)全靜態工作:0Hz-24MHz
(6)三級程序存儲器鎖定
(7)128×8位內部RAM
(8)5個中斷源
(9)可編程串列通道
(10)低功耗的閑置和掉電模式
參考資料:stc89c51-網路 AT89C51-網路
⑶ 1KB的儲存器有多少儲存單元。儲存單元的編號從多少到多少
1KB的存儲器則它有1024個存儲單元。 1KB代表最小的儲存單元。它的編號為從0-1023。
存儲器被劃分成了若干個存儲單元,每個存儲單元都是從0開始順序編號,如一個存儲器有128個存儲單元,則它的編號就是從0-127。
指針的內容是存儲地址在存儲器中有大量的存儲元,把它們按相同的位劃分為組,組內所有的存儲元同時進行讀出或寫入操作,這樣的一-組存儲元稱為一個存儲單元。一個存儲單元通常可以存放一個位元組;存儲單元是CPU訪問存儲器的基本單位。
(3)存儲單元6t圖片擴展閱讀
存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二 進制(或十六進制)表示的數,通常稱為該地址的內容。值得注意的是,存儲單元的地址和地址中的內容兩者是不一樣的。
前者是存儲單元的編號,表示存儲器總的一個位置,而後者表示這個位置里存放的數據。正如一個是房間號碼,一個是房間里住的人一樣。
存放一個機器字的存儲單元,通常稱為字存儲單元,相應的單元地址叫字地址。而存放一個位元組的單元,稱為位元組存儲單元,相應的地址稱為位元組地址。如果計算機中可以編址的最小單元是字存儲單元,則該計算機稱為按字定址的計算機。
⑷ 存儲容量的單位是什麼
地址線、數據線和存儲容量之間的關系:地址線一次確定一個存儲單元,地址線上值可能取的所有組合確定了存儲單元的個數,所以,存儲單元的個數=2^地址線的條數。
地址線用來傳輸地址信息的,比如,cpu在內存或硬碟里基者大面尋找一個數據時,先通過地址線找到地址,然後再通過數據線將數據取出來。如果有32根,就可以訪問2的32次方的位元組,也就是4GB。
數據線,其作用是來連接移動設備和電腦,達到數據傳遞或通信目搏豎的。通俗點說,就是連接電腦與移動設備用來傳送視頻、鈴聲、圖片等文件的通路工具。
(4)存儲單元6t圖片擴展閱讀
存儲容量的計算
一千個位元組是1kb,但是一般說的一千位元組實際上是1024位元組,只是習慣稱為一千位元組。1024kb等於一mb,也就是說的一兆。以下是精確的演算法:
gigabyte等於1024mb
terabyte等於1024gb
perabyte等於1024tb
exabyte等於1024pb
zettabyte等於1024eb
yottabyte等於1024zb
這些單位都是常用的計算單位,一般用於存儲數據的產品通常有這幾個容量,1gb、2gb、4gb、8gb等等,都是2的嫌舉整次方倍。
磁碟的存儲容量計算公式:存儲容量c=磁碟磁頭的數量h*磁軌的數量t*扇區的數量s。
⑸ 存儲器的構成
構成存儲器的存儲介質,存儲元,它可存儲一個二進制代碼。由若干個存儲元組成一個存儲單元,然後再由許多存儲單元組成一個存儲器。一個存儲器包含許多存儲單元,每個存儲單元可存放一個位元組(按位元組編址)。每個存儲單元的位置都有一個編號,即地址,一般用十六進製表示。一個存儲器中所有存儲單元可存放數據的總和稱為它的存儲容量。假設一個存儲器的地址碼由20位二進制數(即5位十六進制數)組成,則可表示2的20次方,即1M個存儲單元地址。每個存儲單元存放一個位元組,則該存儲器的存儲容量為1MB。
⑹ 一個地址單元存儲多少位元組
存儲單元具有存儲數據和讀寫數據的功能,以8位二進製作為一個存儲單元,也就是一個位元組。
每個單元有一個地址,是一個整數編碼,可以表示為二進制整數。程序中的變數和主存儲器的存儲單元相對應。
變數的名字對應著存儲單元的地址,變數內容對應著單元所存儲的數據。存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二進制(或十六進制)表示的數,通常稱為該地址的內容。
(6)存儲單元6t圖片擴展閱讀:
在計算機中最小的信息單位是bit,也就是一個二進制位,8個bit組成一個Byte,也就是位元組。一個存儲單元可以存儲一個位元組,也就是8個二進制位。計算機的存儲器容量是以位元組為最小單位來計算的,對於一個有128個存儲單元的存儲器,可以說它的容量為128位元組。
如果有一個1KB的存儲器則它有1024個存儲單元,它的編號為從0-1023。存儲器被劃分成了若干個存儲單元,每個存儲單元都是從0開始順序編號,如一個存儲器有128個存儲單元,則它的編號就是從0-127。
存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二進制(或十六進制)表示的數,通常稱為該地址的內容。
存儲單元的地址和地址中的內容兩者是不一樣的。前者是存儲單元的編號,表示存儲器總的一個位置,而後者表示這個位置里存放的數據。正如一個是房間號碼,一個是房間里住的人一樣。
⑺ 存儲器的原理是什麼
存儲器講述工作原理及作用
介紹
存儲器(Memory)是現代信息技術中用於保存信息的記憶設備。其概念很廣,有很多層次,在數字系統中,只要能保存二進制數據的都可以是存儲器;在集成電路中,一個沒有實物形式的具有存儲功能的電路也叫存儲器,如RAM、FIFO等;在系統中,具有實物形式的存儲設備也叫存儲器,如內存條、TF卡等。計算機中全部信息,包括輸入的原始數據、計算機程序、中間運行結果和最終運行結果都保存在存儲器中。它根據控制器指定的位置存入和取出信息。有了存儲器,計算機才有記憶功能,才能保證正常工作。計算機中的存儲器按用途存儲器可分為主存儲器(內存)和輔助存儲器(外存),也有分為外部存儲器和內部存儲器的分類方法。外存通常是磁性介質或光碟等,能長期保存信息。內存指主板上的存儲部件,用來存放當前正在執行的數據和程序,但僅用於暫時存放程序和數據,關閉電源或斷電,數據會丟失。
2.按存取方式分類
(1)隨機存儲器(RAM):如果存儲器中任何存儲單元的內容都能被隨機存取,且存取時間與存儲單元的物理位置無關,則這種存儲器稱為隨機存儲器(RAM)。RAM主要用來存放各種輸入/輸出的程序、數據、中間運算結果以及存放與外界交換的信息和做堆棧用。隨機存儲器主要充當高速緩沖存儲器和主存儲器。
(2)串列訪問存儲器(SAS):如果存儲器只能按某種順序來存取,也就是說,存取時間與存儲單元的物理位置有關,則這種存儲器稱為串列訪問存儲器。串列存儲器又可分為順序存取存儲器(SAM)和直接存取存儲器(DAM)。順序存取存儲器是完全的串列訪問存儲器,如磁帶,信息以順序的方式從存儲介質的始端開始寫入(或讀出);直接存取存儲器是部分串列訪問存儲器,如磁碟存儲器,它介於順序存取和隨機存取之間。
(3)只讀存儲器(ROM):只讀存儲器是一種對其內容只能讀不能寫入的存儲器,即預先一次寫入的存儲器。通常用來存放固定不變的信息。如經常用作微程序控制存儲器。目前已有可重寫的只讀存儲器。常見的有掩模ROM(MROM),可擦除可編程ROM(EPROM),電可擦除可編程ROM(EEPROM).ROM的電路比RAM的簡單、集成度高,成本低,且是一種非易失性存儲器,計算機常把一些管理、監控程序、成熟的用戶程序放在ROM中。
3.按信息的可保存性分類
非永久記憶的存儲器:斷電後信息就消失的存儲器,如半導體讀/寫存儲器RAM。
永久性記憶的存儲器:斷電後仍能保存信息的存儲器,如磁性材料做成的存儲器以及半導體ROM。
4.按在計算機系統中的作用分
根據存儲器在計算機系統中所起的作用,可分為主存儲器、輔助存儲器、高速緩沖存儲器、控制存儲器等。為了解決對存儲器要求容量大,速度快,成本低三者之間的矛盾,目前通常採用多級存儲器體系結構,即使用高速緩沖存儲器、主存儲器和外存儲器。
能力影響
從寫命令轉換到讀命令,在某個時間訪問某個地址,以及刷新數據等操作都要求數據匯流排在一定時間內保持休止狀態,這樣就不能充分利用存儲器通道。此外,寬並行匯流排和DRAM內核預取都經常導致不必要的大數據量存取。在指定的時間段內,存儲器控制器能存取的有用數據稱為有效數據速率,這很大程度上取決於系統的特定應用。有效數據速率隨著時間而變化,常低於峰值數據速率。在某些系統中,有效數據速率可下降到峰值速率的10%以下。
通常,這些系統受益於那些能產生更高有效數據速率的存儲器技術的變化。在CPU方面存在類似的現象,最近幾年諸如AMD和 TRANSMETA等公司已經指出,在測量基於CPU的系統的性能時,時鍾頻率不是唯一的要素。存儲器技術已經很成熟,峰值速率和有效數據速率或許並不比以前匹配的更好。盡管峰值速率依然是存儲器技術最重要的參數之一,但其他結構參數也可以極大地影響存儲器系統的性能。
影響有效數據速率的參數
有幾類影響有效數據速率的參數,其一是導致數據匯流排進入若干周期的停止狀態。在這類參數中,匯流排轉換、行周期時間、CAS延時以及RAS到CAS的延時(tRCD)引發系統結構中的大部分延遲問題。
匯流排轉換本身會在數據通道上產生非常長的停止時間。以GDDR3系統為例,該系統對存儲器的開放頁不斷寫入數據。在這期間,存儲器系統的有效數據速率與其峰值速率相當。不過,假設100個時鍾周期中,存儲器控制器從讀轉換到寫。由於這個轉換需要6個時鍾周期,有效的數據速率下降到峰值速率的 94%。在這100個時鍾周期中,如果存儲器控制器將匯流排從寫轉換到讀的話,將會丟失更多的時鍾周期。這種存儲器技術在從寫轉換到讀時需要15個空閑周期,這會將有效數據速率進一步降低到峰值速率的79%。表1顯示出針幾種高性能存儲器技術類似的計算結果。
顯然,所有的存儲器技術並不相同。需要很多匯流排轉換的系統設計師可以選用諸如XDR、RDRAM或者DDR2這些更高效的技術來提升性能。另一方面,如果系統能將處理事務分組成非常長的讀寫序列,那麼匯流排轉換對有效帶寬的影響最小。不過,其他的增加延遲現象,例如庫(bank)沖突會降低有效帶寬,對性能產生負面影響。
DRAM技術要求庫的頁或行在存取之前開放。一旦開放,在一個最小周期時間,即行周期時間(tRC)結束之前,同一個庫中的不同頁不能開放。對存儲器開放庫的不同頁存取被稱為分頁遺漏,這會導致與任何tRC間隔未滿足部分相關的延遲。對於還沒有開放足夠周期以滿足tRC間隙的庫而言,分頁遺漏被稱為庫沖突。而tRC決定了庫沖突延遲時間的長短,在給定的DRAM上可用的庫數量直接影響庫沖突產生的頻率。
大多數存儲器技術有4個或者8個庫,在數十個時鍾周期具有tRC值。在隨機負載情況下,那些具有8個庫的內核比具有4個庫的內核所發生的庫沖突更少。盡管tRC與庫數量之間的相互影響很復雜,但是其累計影響可用多種方法量化。
存儲器讀事務處理
考慮三種簡單的存儲器讀事務處理情況。第一種情況,存儲器控制器發出每個事務處理,該事務處理與前一個事務處理產生一個庫沖突。控制器必須在打開一個頁和打開後續頁之間等待一個tRC時間,這樣增加了與頁循環相關的最大延遲時間。在這種情況下的有效數據速率很大程度上決定於I/O,並主要受限於DRAM內核電路。最大的庫沖突頻率將有效帶寬削減到當前最高端存儲器技術峰值的20%到30%。
在第二種情況下,每個事務處理都以隨機產生的地址為目標。此時,產生庫沖突的機會取決於很多因素,包括tRC和存儲器內核中庫數量之間的相互作用。tRC值越小,開放頁循環地越快,導致庫沖突的損失越小。此外,存儲器技術具有的庫越多,隨機地址存取庫沖突的機率就越小。
第三種情況,每個事務處理就是一次頁命中,在開放頁中定址不同的列地址。控制器不必訪問關閉頁,允許完全利用匯流排,這樣就得到一種理想的情況,即有效數據速率等於峰值速率。
第一種和第三種情況都涉及到簡單的計算,隨機情況受其他的特性影響,這些特性沒有包括在DRAM或者存儲器介面中。存儲器控制器仲裁和排隊會極大地改善庫沖突頻率,因為更有可能出現不產生沖突的事務處理,而不是那些導致庫沖突的事務處理。
然而,增加存儲器隊列深度未必增加不同存儲器技術之間的相對有效數據速率。例如,即使增加存儲器控制隊列深度,XDR的有效數據速率也比 GDDR3高20%。存在這種增量主要是因為XDR具有更高的庫數量以及更低的tRC值。一般而言,更短的tRC間隔、更多的庫數量以及更大的控制器隊列能產生更高的有效帶寬。
實際上,很多效率限制現象是與行存取粒度相關的問題。tRC約束本質上要求存儲器控制器從新開放的行中存取一定量的數據,以確保數據管線保持充滿。事實上,為保持數據匯流排無中斷地運行,在開放一個行之後,只須讀取很少量的數據,即使不需要額外的數據。
另外一種減少存儲器系統有效帶寬的主要特性被歸類到列存取粒度范疇,它規定了每次讀寫操作必須傳輸的數據量。與之相反,行存取粒度規定每個行激活(一般指每個RAS的CAS操作)需要多少單獨的讀寫操作。列存取粒度對有效數據速率具有不易於量化的巨大影響。因為它規定一個讀或寫操作中需要傳輸的最小數據量,列存取粒度給那些一次只需要很少數據量的系統帶來了問題。例如,一個需要來自兩列各8位元組的16位元組存取粒度系統,必須讀取總共32位元組以存取兩個位置。因為只需要32個位元組中的16個位元組,系統的有效數據速率降低到峰值速率的50%。匯流排帶寬和脈沖時間長度這兩個結構參數規定了存儲器系統的存取粒度。
匯流排帶寬是指連接存儲器控制器和存儲器件之間的數據線數量。它設定最小的存取粒度,因為對於一個指定的存儲器事務處理,每條數據線必須至少傳遞一個數據位。而脈沖時間長度則規定對於指定的事務處理,每條數據線必須傳遞的位數量。每個事務處理中的每條數據線只傳一個數據位的存儲技術,其脈沖時間長度為1。總的列存取粒度很簡單:列存取粒度=匯流排寬度×脈沖時間長度。
很多系統架構僅僅通過增加DRAM器件和存儲匯流排帶寬就能增加存儲系統的可用帶寬。畢竟,如果4個400MHz數據速率的連接可實現 1.6GHz的總峰值帶寬,那麼8個連接將得到3.2GHz。增加一個DRAM器件,電路板上的連線以及ASIC的管腳就會增多,總峰值帶寬相應地倍增。
首要的是,架構師希望完全利用峰值帶寬,這已經達到他們通過物理設計存儲器匯流排所能達到的最大值。具有256位甚或512位存儲匯流排的圖形控制器已並不鮮見,這種控制器需要1,000個,甚至更多的管腳。封裝設計師、ASIC底層規劃工程師以及電路板設計工程師不能找到採用便宜的、商業上可行的方法來對這么多信號進行布線的矽片區域。僅僅增加匯流排寬度來獲得更高的峰值數據速率,會導致因為列存取粒度限制而降低有效帶寬。
假設某個特定存儲技術的脈沖時間長度等於1,對於一個存儲器處理,512位寬系統的存取粒度為512位(或者64位元組)。如果控制器只需要一小段數據,那麼剩下的數據就被浪費掉,這就降低了系統的有效數據速率。例如,只需要存儲系統32位元組數據的控制器將浪費剩餘的32位元組,進而導致有效的數據速率等於50%的峰值速率。這些計算都假定脈沖時間長度為1。隨著存儲器介面數據速率增加的趨勢,大多數新技術的最低脈沖時間長度都大於1。
選擇技巧
存儲器的類型將決定整個嵌入式系統的操作和性能,因此存儲器的選擇是一個非常重要的決策。無論系統是採用電池供電還是由市電供電,應用需求將決定存儲器的類型(易失性或非易失性)以及使用目的(存儲代碼、數據或者兩者兼有)。另外,在選擇過程中,存儲器的尺寸和成本也是需要考慮的重要因素。對於較小的系統,微控制器自帶的存儲器就有可能滿足系統要求,而較大的系統可能要求增加外部存儲器。為嵌入式系統選擇存儲器類型時,需要考慮一些設計參數,包括微控制器的選擇、電壓范圍、電池壽命、讀寫速度、存儲器尺寸、存儲器的特性、擦除/寫入的耐久性以及系統總成本。
選擇存儲器時應遵循的基本原則
1、內部存儲器與外部存儲器
一般情況下,當確定了存儲程序代碼和數據所需要的存儲空間之後,設計工程師將決定是採用內部存儲器還是外部存儲器。通常情況下,內部存儲器的性價比最高但靈活性最低,因此設計工程師必須確定對存儲的需求將來是否會增長,以及是否有某種途徑可以升級到代碼空間更大的微控制器。基於成本考慮,人們通常選擇能滿足應用要求的存儲器容量最小的微控制器,因此在預測代碼規模的時候要必須特別小心,因為代碼規模增大可能要求更換微控制器。目前市場上存在各種規模的外部存儲器器件,我們很容易通過增加存儲器來適應代碼規模的增加。有時這意味著以封裝尺寸相同但容量更大的存儲器替代現有的存儲器,或者在匯流排上增加存儲器。即使微控制器帶有內部存儲器,也可以通過增加外部串列EEPROM或快閃記憶體來滿足系統對非易失性存儲器的需求。
2、引導存儲器
在較大的微控制器系統或基於處理器的系統中,設計工程師可以利用引導代碼進行初始化。應用本身通常決定了是否需要引導代碼,以及是否需要專門的引導存儲器。例如,如果沒有外部的定址匯流排或串列引導介面,通常使用內部存儲器,而不需要專門的引導器件。但在一些沒有內部程序存儲器的系統中,初始化是操作代碼的一部分,因此所有代碼都將駐留在同一個外部程序存儲器中。某些微控制器既有內部存儲器也有外部定址匯流排,在這種情況下,引導代碼將駐留在內部存儲器中,而操作代碼在外部存儲器中。這很可能是最安全的方法,因為改變操作代碼時不會出現意外地修改引導代碼。在所有情況下,引導存儲器都必須是非易失性存儲器。
可以使用任何類型的存儲器來滿足嵌入式系統的要求,但終端應用和總成本要求通常是影響我們做出決策的主要因素。有時,把幾個類型的存儲器結合起來使用能更好地滿足應用系統的要求。例如,一些PDA設計同時使用易失性存儲器和非易失性存儲器作為程序存儲器和數據存儲器。把永久的程序保存在非易失性ROM中,而把由用戶下載的程序和數據存儲在有電池支持的易失性DRAM中。不管選擇哪種存儲器類型,在確定將被用於最終應用系統的存儲器之前,設計工程師必須仔細折中考慮各種設計因素。
⑻ 固態硬碟存儲0和1採用的物理表示方法是什麼
固態硬碟中0和1採用的物理表示方法是電壓閾值的判定,以此來確定存儲的數據是1還是0。
1、固態硬碟(SSD)中,存儲單元結構分別有三種,分別是SLC(Single Level Cell 單層單元)、MLC(Multi-Level Cell 多層單元)、TLC(Triple Level Cell 三層單元)。
2、SLC(Single Level Cell 單層單元),就是在每芹冊清個存儲單元里存儲 1bit 的數據,存儲的數據是0還是1是基於電壓閥值的判定。
3、SLC對於 NAND Flash 的寫入(編程),就是控制 Control Gate 去充電,使得浮置柵極存儲的電荷夠多,超過4V,存儲單元就表示 0(已編程),如果沒有充電或者電壓閥值低於4V,就表示 1(已擦除)。
4、MLC(Multi-Level Cell 多層單元), 就是每個存儲單元里存儲 2bit 的數據,也是基於電壓閥值的判定,
5、MLC當充入的電荷不足3.5V時,就代表」11」,當充入的姿滲電荷在3.5V和4.0V之間,則代表」10」,當充入的電荷在4V和5.5V之間,則表示」01」,當充入的電荷在5.5V以上,則表示」00」。
6、TLC(Triple Level Cell 三層單元), 比較復雜,因為每個存儲單元里存儲 3bit 的數據,所以它的電壓閾值的分界點就更細致,導致的結果也就每個存儲單元的可靠性也更低。
(8)存儲單元6t圖片擴展閱讀:
SLC = Single-Level Cell ,嫌前即1bit/cell,速度快壽命長,價格貴(約MLC的3倍以上的價格),約10萬次擦寫壽命。
MLC = Multi-Level Cell,即2bit/cell,速度一般壽命一般,價格一般,約3000—10000次擦寫壽命。
TLC = Trinary-Level Cell,即3bit/cell,也有Flash廠家叫8LC,速度慢壽命短,價格便宜,約500次擦寫壽命。
⑼ 存儲器晶元的「256k x 16位」是什麼意思這是怎麼命名的
256K是256KB(256千位元組)容量,16位是數據傳輸位寬(既16個數據同時傳輸)。另外對於存儲器技術參數還有頻率,也是相當重要,它決定多少時間傳輸一次(比如問起的256k x 16位,那一次就是16位)數據。
一般存儲器的命名是以存儲器的容量x存儲器位寬(數據線根數)的規則命名。
這樣根據命名就可以看出存儲器的總容量,以及位寬(數據線根數)是多少。位寬越大,每次處理器能一次讀取的數據就越多,這樣訪問速度就越快。
256kx16位,就是存儲器總的容量是256k,也就是256x,256K是存儲器容量。
16位是字長位寬,位寬越大,CPU一次讀取的數據量就越多。
存儲晶元是按模塊存儲的,分多少塊,每塊多少大容量,所說的 256K是每塊存256位元組,那16位是匯流排數理。
(9)存儲單元6t圖片擴展閱讀
存儲器容量計算公式:
按位計算 (b) : 存儲容量 = 存儲單元個數 x 存儲字長;
按位元組計算(B): 存儲容量 = 存儲單元個數 x 存儲字長 / 8。
存儲單元 :CPU訪問存儲器的最小單位,每個存儲單元都有一個地址。
存儲字長 :存儲器中一個存儲單元(存儲地址)所存儲的二進制代碼的位數。
例題:一個存儲器有16根地址線,8根數據線,求此存儲器存儲容量?
答:按位求取 2^16 x 8位 =64K x 8位;
按位元組求取 2^16 x 8位/8 = 64K x B = 64kB。
分析:存儲單元與地址線的關系: 我們知道CPU訪問存儲器的最小單位是存儲單元且每個存儲單元都有一個地址,1 根地址線可以查找 2 個地址既2個存儲單元,16根地址線則可以查找 2^16個存儲單元。
存儲字長與數據線的關系 : 我們知道存儲字長是指存儲器中一個存儲單元(存儲地址)所存儲的二進制代碼的位數,而二進制代碼的位數是由數據線的根數決定的,也就是說: 存儲字長 = 數據線根數位元組(B)與位(b)的關系 : 計算機里規定 1Byte = 8bit 。
所以存儲器容量就有;兩種表示方法 64K x 8位 = 64KB。我們常見的內存容量表示方法 是以位元組為單位的。例如 1GB ,4MB, 512KB
1GB = 10^3MB =10^6KB = 10^9B = 10^9 x 8b 。
⑽ 計算機的儲存單元中儲存的內容是什麼
計算機的儲存單元中儲存的內容是數據和指令。
存儲地址一般用十六進制數表示,而每一個存儲器地址中又存放著一組二進制(或十六進制)表示的數,通常稱為該地址的內容。值得注意的是,存儲單元的地址和地址中的內容兩者是不一樣的。前者是存儲單元的編號,表示存儲器總的一個位置,而後者表示這個位置里存放的數據。正如一個是房間號碼,一個是房間里住的人一樣。
存放一個機器字的存儲單元,通常稱為字存儲單元,相應的單元地址叫字地址。而存放一個位元組的單元,稱為位元組存儲單元,相應的地址稱為位元組地址。
如果計算機中可以編址的最小單元是字存儲單元,則該計算機稱為按字定址的計算機。如果計算機中可編址的最小單位是位元組,則該計算機稱為按位元組定址的計算機。
(10)存儲單元6t圖片擴展閱讀
如果機器字長等於存儲器單元的位數,一個機器字可以包含數個位元組,所以一個存儲單元也可以包含數個能夠單獨編址的位元組地址。
例如一個16位二進制的字存儲單元可存放兩個位元組,可以按字地址定址,也可以按位元組地址定址。當用位元組地址定址時,16位的存儲單元占兩個位元組地址。
在計算機中最小的信息單位是bit,也就是一個二進制位,8個bit組成一個Byte,也就是位元組。一個存儲單元可以存儲一個位元組,也就是8個二進制位。計算機的存儲器容量是以位元組為最小單位來計算的,對於一個有128個存儲單元的存儲器,可以說它的容量為128位元組。
如果有一個1KB的存儲器則它有1024個存儲單元,它的編號為從0-1023。存儲器被劃分成了若干個存儲單元,每個存儲單元都是從0開始順序編號,如一個存儲器有128個存儲單元,則它的編號就是從0-127。