當前位置:首頁 » 服務存儲 » 存儲器邊界
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

存儲器邊界

發布時間: 2023-08-03 15:51:34

A. 為使4位元組組成的字能從存儲器中一次讀出,要求存放在存儲器中的字邊界對齊,一個字的地址碼應是什麼

邊界對齊法:假設數據字長32位,存儲字長(一個存儲周期最多能夠從主存讀寫的數據位數)64位。雙子數據的起始地址的最末三個二進制位必須是000,單字數據的起始地址的最末兩位必須為00,半字數據的起始地址的最末位必須為0。這種存儲方式能保證無論訪問雙字、單字、半字或位元組,都能在一個存儲周期完成。

答案:最低兩位為00

B. 在存儲器中指令和數據在形式上有什麼區別嗎

變數可以存儲在存儲器中的不同位置,這取決於它們的存活。在外部函數中定義的變數(全局變數或靜態外部變數)和函數內部靜態變數的定義,它的生存正在運行的整個過程中,這些變數存儲在,數據段,數據段(datasegment)留在存儲器中的一些固定大小的空間,它分為兩部分這些變數的,其中的一部分被用來初始化一個變數來存儲其他部分被用來存儲一個未初始化的變數。開始,當程序退出塊,直到
當函數中定義的自動變數從程序(不使用定義的關鍵字static變數)的生存開始在一個代碼塊執行它。只存在於調用函數的周期函數的參數作為變數。這些變數被存儲在所述的棧(stack)。堆棧的存儲器空間的一部分,啟動小,然後,直到它到達一個預定義的邊界逐漸自動增加。在DOS下,如沒有虛擬內存(virtualmemory)系統,此限制是由系統決定的,通常是非常大的,所以程序員不必擔心堆棧空間的枯竭。

C. 存儲器是怎麼存儲東西的 到現在都不明白存儲器是怎麼存儲的 現在都不知道為什麼

硬碟是現在計算機上最常用的存儲器之一。我們都知道,計算機之所以神奇,是因為它具有高速分析處理數據的能力。而這些數據都以文件的形式存儲在硬碟里。不過,計算機可不像人那麼聰明。在讀取相應的文件時,你必須要給出相應的規則。這就是分區概念。分區從實質上說就是對硬碟的一種格式化。當我們創建分區時,就已經設置好了硬碟的各項物理參數,指定了硬碟主引導記錄(即Master Boot Record,一般簡稱為MBR)和引導記錄備份的存放位置。而對於文件系統以及其他操作系統管理硬碟所需要的信息則是通過以後的高級格式化,即Format命令來實現。

面、磁軌和扇區

硬碟分區後,將會被劃分為面(Side)、磁軌(Track)和扇區(Sector)。需要注意的是,這些只是個虛擬的概念,並不是真正在硬碟上劃軌道。先從面說起,硬碟一般是由一片或幾片圓形薄膜疊加而成。我們所說,每個圓形薄膜都有兩個「面」,這兩個面都是用來存儲數據的。按照面的多少,依次稱為0面、1面、2面……由於每個面都專有一個讀寫磁頭,也常用0頭(head)、1頭……稱之。按照硬碟容量和規格的不同,硬碟面數(或頭數)也不一定相同,少的只有2面,多的可達數十面。各面上磁軌號相同的磁軌合起來,稱為一個柱面(Cylinder)(如圖1)。(圖)

上面我們提到了磁軌的概念。那麼究竟何為磁軌呢?由於磁碟是旋轉的,則連續寫入的數據是排列在一個圓周上的。我們稱這樣的圓周為一個磁軌。(如圖2)如果讀寫磁頭沿著圓形薄膜的半徑方向移動一段距離,以後寫入的數據又排列在另外一個磁軌上。根據硬碟規格的不同,磁軌數可以從幾百到數千不等;一個磁軌上可以容納數KB的數據,而主機讀寫時往往並不需要一次讀寫那麼多,於是,磁軌又被劃分成若干段,每段稱為一個扇區。一個扇區一般存放512位元組的數據。扇區也需要編號,同一磁軌中的扇區,分別稱為1扇區,2扇區……

計算機對硬碟的讀寫,處於效率的考慮,是以扇區為基本單位的。即使計算機只需要硬碟上存儲的某個位元組,也必須一次把這個位元組所在的扇區中的512位元組全部讀入內存,再使用所需的那個位元組。不過,在上文中我們也提到,硬碟上面、磁軌、扇區的劃分表面上是看不到任何痕跡的,雖然磁頭可以根據某個磁軌的應有半徑來對准這個磁軌,但怎樣才能在首尾相連的一圈扇區中找出所需要的某一扇區呢?原來,每個扇區並不僅僅由512個位元組組成的,在這些由計算機存取的數據的前、後兩端,都另有一些特定的數據,這些數據構成了扇區的界限標志,標志中含有扇區的編號和其他信息。計算機就憑借著這些標志來識別扇區

硬碟的數據結構

在上文中,我們談了數據在硬碟中的存儲的一般原理。為了能更深入地了解硬碟,我們還必須對硬碟的數據結構有個簡單的了解。硬碟上的數據按照其不同的特點和作用大致可分為5部分:MBR區、DBR區、FAT區、DIR區和DATA區。我們來分別介紹一下:

1.MBR區

MBR(Main Boot Record 主引導記錄區)�位於整個硬碟的0磁軌0柱面1扇區。不過,在總共512位元組的主引導扇區中,MBR只佔用了其中的446個位元組,另外的64個位元組交給了DPT(Disk Partition Table硬碟分區表)(見表),最後兩個位元組「55,AA」是分區的結束標志。這個整體構成了硬碟的主引導扇區。(圖)

主引導記錄中包含了硬碟的一系列參數和一段引導程序。其中的硬碟引導程序的主要作用是檢查分區表是否正確並且在系統硬體完成自檢以後引導具有激活標志的分區上的操作系統,並將控制權交給啟動程序。MBR是由分區程序(如Fdisk.exe)所產生的,它不依賴任何操作系統,而且硬碟引導程序也是可以改變的,從而實現多系統共存。

下面,我們以一個實例讓大家更直觀地來了解主引導記錄:

例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00

在這里我們可以看到,最前面的「80」是一個分區的激活標志,表示系統可引導;「01 01 00」表示分區開始的磁頭號為01,開始的扇區號為01,開始的柱面號為00;「0B」表示分區的系統類型是FAT32,其他比較常用的有04(FAT16)、07(NTFS);「FE BF FC」表示分區結束的磁頭號為254,分區結束的扇區號為63、分區結束的柱面號為764;「3F 00 00 00」表示首扇區的相對扇區號為63;「7E 86 BB 00」表示總扇區數為12289622。

2.DBR區

DBR(Dos Boot Record)是操作系統引導記錄區的意思。它通常位於硬碟的0磁軌1柱面1扇區,是操作系統可以直接訪問的第一個扇區,它包括一個引導程序和一個被稱為BPB(Bios Parameter Block)的本分區參數記錄表。引導程序的主要任務是當MBR將系統控制權交給它時,判斷本分區跟目錄前兩個文件是不是操作系統的引導文件(以DOS為例,即是Io.sys和Msdos.sys)。如果確定存在,就把它讀入內存,並把控制權 交給該文件。BPB參數塊記錄著本分區的起始扇區、結束扇區、文件存儲格式、硬碟介質描述符、根目錄大小、FAT個數,分配單元的大小等重要參數。DBR是由高級格式化程序(即Format.com等程序)所產生的。

3.FAT區

在DBR之後的是我們比較熟悉的FAT(File Allocation Table文件分配表)區。在解釋文件分配表的概念之前,我們先來談談簇(Cluster)的概念。文件佔用磁碟空間時,基本單位不是位元組而是簇。一般情況下,軟盤每簇是1個扇區,硬碟每簇的扇區數與硬碟的總容量大小有關,可能是4、8、16、32、64……

同一個文件的數據並不一定完整地存放在磁碟的一個連續的區域內,而往往會分成若干段,像一條鏈子一樣存放。這種存儲方式稱為文件的鏈式存儲。由於硬碟上保存著段與段之間的連接信息(即FAT),操作系統在讀取文件時,總是能夠准確地找到各段的位置並正確讀出。

為了實現文件的鏈式存儲,硬碟上必須准確地記錄哪些簇已經被文件佔用,還必須為每個已經佔用的簇指明存儲後繼內容的下一個簇的簇號。對一個文件的最後一簇,則要指明本簇無後繼簇。這些都是由FAT表來保存的,表中有很多表項,每項記錄一個簇的信息。由於FAT對於文件管理的重要性,所以FAT有一個備份,即在原FAT的後面再建一個同樣的FAT。初形成的FAT中所有項都標明為「未佔用」,但如果磁碟有局部損壞,那麼格式化程序會檢測出損壞的簇,在相應的項中標為「壞簇」,以後存文件時就不會再使用這個簇了。FAT的項數與硬碟上的總簇數相當,每一項佔用的位元組數也要與總簇數相適應,因為其中需要存放簇號。FAT的格式有多種,最為常見的是FAT16和FAT32。

4.DIR區

DIR(Directory)是根目錄區,緊接著第二FAT表(即備份的FAT表)之後,記錄著根目錄下每個文件(目錄)的起始單元,文件的屬性等。定位文件位置時,操作系統根據DIR中的起始單元,結合FAT表就可以知道文件在硬碟中的具體位置和大小了。

5.數據(DATA)區

數據區是真正意義上的數據存儲的地方,位於DIR區之後,占據硬碟上的大部分數據空間。

磁碟的文件系統
經常聽高手們說到FAT16、FAT32、NTFS等名詞,朋友們可能隱約知道這是文件系統的意思。可是,究竟這么多文件系統分別代表什麼含義呢?今天,我們就一起來學習學習:

1.什麼是文件系統?
所謂文件系統,它是操作系統中藉以組織、存儲和命名文件的結構。磁碟或分區和它所包括的文件系統的不同是很重要的,大部分應用程序都基於文件系統進行操作,在不同種文件系統上是不能工作的。

2.文件系統大家族
常用的文件系統有很多,MS-DOS和Windows 3.x使用FAT16文件系統,默認情況下Windows 98也使用FAT16,Windows 98和Me可以同時支持FAT16、FAT32兩種文件系統,Windows NT則支持FAT16、NTFS兩種文件系統,Windows 2000可以支持FAT16、FAT32、NTFS三種文件系統,Linux則可以支持多種文件系統,如FAT16、FAT32、NTFS、Minix、ext、ext2、xiafs、HPFS、VFAT等,不過Linux一般都使用ext2文件系統。下面,筆者就簡要介紹這些文件系統的有關情況:

(1)FAT16
FAT的全稱是「File Allocation Table(文件分配表系統)」,最早於1982年開始應用於MS-DOS中。FAT文件系統主要的優點就是它可以允許多種操作系統訪問,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。這一文件系統在使用時遵循8.3命名規則(即文件名最多為8個字元,擴展名為3個字元)。

(2)VFAT
VFAT是「擴展文件分配表系統」的意思,主要應用於在Windows 95中。它對FAT16文件系統進行擴展,並提供支持長文件名,文件名可長達255個字元,VFAT仍保留有擴展名,而且支持文件日期和時間屬性,為每個文件保留了文件創建日期/時間、文件最近被修改的日期/時間和文件最近被打開的日期/時間這三個日期/時間。

(3)FAT32
FAT32主要應用於Windows 98系統,它可以增強磁碟性能並增加可用磁碟空間。因為與FAT16相比,它的一個簇的大小要比FAT16小很多,所以可以節省磁碟空間。而且它支持2G以上的分區大小。朋友們從附表中可以看出FAT16與FAT32的一不同。

(4)HPFS
高性能文件系統。OS/2的高性能文件系統(HPFS)主要克服了FAT文件系統不適合於高檔操作系統這一缺點,HPFS支持長文件名,比FAT文件系統有更強的糾錯能力。Windows NT也支持HPFS,使得從OS/2到Windows NT的過渡更為容易。HPFS和NTFS有包括長文件名在內的許多相同特性,但使用可靠性較差。

(5)NTFS
NTFS是專用於Windows NT/2000操作系統的高級文件系統,它支持文件系統故障恢復,尤其是大存儲媒體、長文件名。NTFS的主要弱點是它只能被Windows NT/2000所識別,雖然它可以讀取FAT文件系統和HPFS文件系統的文件,但其文件卻不能被FAT文件系統和HPFS文件系統所存取,因此兼容性方面比較成問題。

ext2
這是Linux中使用最多的一種文件系統,因為它是專門為Linux設計,擁有最快的速度和最小的CPU佔用率。ext2既可以用於標準的塊設備(如硬碟),也被應用在軟盤等移動存儲設備上。現在已經有新一代的Linux文件系統如SGI公司的XFS、ReiserFS、ext3文件系統等出現。

小結:雖然上面筆者介紹了6種文件系統,但占統治地位的卻是FAT16/32、NTFS等少數幾種,使用最多的當然就是FAT32啦。只要在「我的電腦」中右擊某個驅動器的屬性,就可以在「常規」選項中(圖)看到所使用的文件系統。

明明白白識別硬碟編號
目前,電子市場上硬碟品牌最讓大家熟悉的無非是IBM、昆騰(Quantum)、希捷(Seagate),邁拓(Maxtor)等「老字型大小」。而這些硬碟型號的編號則各不相同,令人眼花繚亂。其實,這些編號均有一定的規律,表示一些特定?的含義。一般來說,我們可以從其編號來了解硬碟的性能指標,包括介面?類型、轉速、容量等。作為DIY朋友來說,只有自己真正掌握正確識別硬碟編號,在選購硬碟時,就方便得多(以致不被「黑」),至少不會被賣的人說啥是啥。以下舉例說明,供朋友們參考。

一、IBM
IBM是硬碟業的巨頭,其產品幾乎涵蓋了所有硬碟領域。而且IBM還是去年硬碟容量、價格戰的始作蛹者。我們今天能夠用得上經濟上既便宜,而且容量又大的硬碟可都得感謝IBM。
IBM的每一個產品又分為多個系列,它的命名方式為:產品名+系列代號+介面類型+碟片尺寸+轉速+容量。以Deskstar 22GXP的13.5GB硬碟為例,該硬碟的型號為:DJNA-371350,字母D代表Deskstar產品,JN代表Deskstar25GP與22GP系列,A代表ATA介面,3代表3寸碟片,7是7200轉產品,最後四位數字為硬碟容量13.5GB。IBM系列代號(IDE)含義如下:
TT=Deskstar 16GP或14GXP JN=Deskstar 25GP或22GXP RV=Ultrastar 18LZX或36ZX
介面類型含義如下:A=ATA
S與U=Ultra SCSI、Ultra SCSI Wide、Ultra SCSI SCA、增強型SCSI、
增強擴展型SCSI(SCA)
C=Serial Storage Architecture連續存儲體系SCSI L=光纖通道SCSI

二、MAXTOR(邁拓)
MAXTOR是韓國現代電子美國公司的一個獨立子公司,以前該公司的產品也覆蓋了IDE與SCSI兩個方面,但由於SCSI方面的產品缺乏竟爭力而最終放棄了這個高端市場從而主攻IDE硬碟,所以MAXTOR公司應該是如今硬碟廠商中最專一的了。
MAXTOR硬碟編號規則如下:首位+容量+介面類型+磁頭數,MAXTOR?從鑽石四代開始,其首位數字就為9,一直延續到現在,所以大家如今能在電子市場上見到的MAXTOR硬碟首位基本上都為9。另外比較特殊的是MAXTOR編號中有磁頭數這一概念,因為MAXTOR硬碟是大打單碟容量的發起人,所以其硬碟的型號中要將單碟容量從磁頭數中體現出來。單碟容量=2*硬碟總容量/磁頭數。
現以金鑽三代(DiamondMax Plus6800)10.2GB的硬碟為例說明:該硬碟?型號為91024U3,9是首位,1024是容量,U是介面類型UDMA66,3代表該硬碟有3個磁頭,也就是說其中的一個碟片是單面有數據。這個單碟容量就為2*10.2/3=6.8GB。MAXTOR硬碟介面類型字母含義如:
A=PIO模式 D=UDMA33模式 U=UDMA66模式

三、SEAGATE(希捷)
希捷科技公司(Seagate Technology)是世界上最大的磁碟驅動器、磁?盤和讀寫磁頭生產廠家,該公司是一直是IBM、COMPAQ、SONY等業界大戶的硬碟供應商。希捷還保持著業界第一款10000轉硬碟的記錄(捷豹Cheetah系列SCSI)與最大容量(捷豹三代73GB)的記錄,公司的實力由此可見一斑。但?由於希捷一直是以高端應用為主(例如SCSI硬碟),而並不是特別重視低端家用產品的開發,從而導致在DIY一族心目中的地位不如昆騰等硬碟供應商?。好在希捷公司及時注意到了這個問題,不久前投入市場的酷魚(Barracuda)系列就一掃希捷硬碟以往在單碟容量、轉速、噪音、非正常外頻下工作穩?定性、綜合性能上的劣勢。
希捷的硬碟系列從低端到高端的產品名稱分別為:U4系列、Medalist(金牌)系列、U8系列、Medalist Pro(金牌Pro)系列、Barracuda(酷魚)系列。其中Medalist Pro與Barracuda系列是7200轉的產品,其他的是5400轉的產品。硬碟的型號均以ST開頭,現以酷魚10.2GB硬碟為例來說明。該硬碟的型號是:ST310220A,在ST後第一位數字是代表硬碟的尺寸,3就是該硬碟採用3寸碟片,如今其他規格的硬碟已基本上沒有了,所以大家能夠見到?的絕大多數硬碟該位數字均不3,3後面的1022代表的是該硬碟的格式化容量是10.22GB,最後一位數字0是代表7200轉產品。這一點不要混淆與希捷以前的入門級產品Medalist ST38420A混淆。多數希捷的Medalist Pro系列開始,以結尾的產品均代表7200轉硬碟,其它數字結尾(包括1、2)代表5400轉的產品。位於型號最後的字母是硬碟的介面類型。希捷硬碟的介面類型字母含義如下:
A=ATA UDMA33或UDMA66 IDE介面 AG為筆記本電腦專用的ATA介面硬碟。
W為ULTRA Wide SCSI,
其數據傳輸率為40MB每秒 N為ULTRA Narrow SCSI,其數據傳輸率為20MB每秒。
而ST34501W/FC和ST19101N/FC中的FC(Fibre Channel)表示光纖通道,可提供高達每秒100MB的數據傳輸率,並且支持熱插拔。

硬碟及介面標準的發展歷史
一、硬碟的歷史
說起硬碟的歷史,我們不能不首先提到藍色巨人IBM所發揮的重要作用,正是IBM發明了硬碟,並且為硬碟的發展做出了一系列重大貢獻。在發明磁碟系統之前,計算機使用穿孔紙帶、磁帶等來存儲程序與數據,這些存儲方式不僅容量低、速度慢,而且有個大缺陷:它們都是順序存儲,為了讀取後面的數據,必須從頭開始讀,無法實現隨機存取數據。
在1956年9月,IBM向世界展示了第一台商用硬碟IBM 350 RAMAC(Random Access Method of Accounting and Control),這套系統的總容量只有5MB,卻是使用了50個直徑為24英寸的磁碟組成的龐然大物。而在1968年IBM公司又首次提出了「溫徹斯特」Winchester技術。「溫徹斯特」技術的精髓是:「使用密封、固定並高速旋轉的鍍磁碟片,磁頭沿碟片徑向移動,磁頭磁頭懸浮在高速轉動的碟片上方,而不與碟片直接接觸」,這便是現代硬碟的原型。在1973年IBM公司製造出第一台採用「溫徹期特」技術製造的硬碟,從此硬碟技術的發展有了正確的結構基礎。1979年,IBM再次發明了薄膜磁頭,為進一步減小硬碟體積、增大容量、提高讀寫速度提供了可能。70年代末與80年代初是微型計算機的萌芽時期,包括希捷、昆騰、邁拓在內的許多著名硬碟廠商都誕生於這一段時間。1979年,IBM的兩位員工Alan Shugart和Finis Conner決定要開發像5.25英寸軟碟機那樣大小的硬碟驅動器,他們離開IBM後組建了希捷公司,次年,希捷發布了第一款適合於微型計算機使用的硬碟,容量為5MB,體積與軟碟機相仿。
PC時代之前的硬碟系統都具有體積大、容量小、速度慢和價格昂貴的特點,這是因為當時計算機的應用范圍還太小,技術與市場之間是一種相互制約的關系,使得包括存儲業在內的整個計算機產業的發展都受到了限制。 80年代末期IBM對硬碟發展的又一項重大貢獻,即發明了MR(Magneto Resistive)磁頭,這種磁頭在讀取數據時對信號變化相當敏感,使得碟片的存儲密度能夠比以往20MB每英寸提高了數十倍。1991年IBM生產的3.5英寸的硬碟使用了MR磁頭,使硬碟的容量首次達到了1GB,從此硬碟容量開始進入了GB數量級的時代 。1999年9月7日,邁拓公司(Maxtor)_宣布了首塊單碟容量高達10.2GB的ATA硬碟,從而把硬碟的容量引入了一個新里程碑。

二、介面標準的發展
(1)IDE和EIDE的由來
最早的IBM PC並不帶有硬碟,它的BIOS及DOS 1.0操作系統也不支持任何硬碟,因為系統的內存只有16KB,就連軟碟機和DOS都是可選件。後來DOS 2引入了子目錄系統,並添加了對「大容量」存儲設備的支持,於是一些公司開始出售供IBM PC使用的硬碟系統,這些硬碟與一塊控制卡、一個獨立的電源被一起裝在一個外置的盒子里,並通過一條電纜與插在擴展槽中的一塊適配器相連,為了使用這樣的硬碟,必須從軟碟機啟動,並載入一個專用設備驅動程序。
1983年IBM公司推出了PC/XT,雖然XT仍然使用8088 CPU,但配置卻要高得多,加上了一個10MB的內置硬碟,IBM把控制卡的功能集成到一塊介面控制卡上,構成了我們常說的硬碟控制器。其介面控制卡上有一塊ROM晶元,其中存有硬碟讀寫程序,直到基於80286處理器的PC/AT的推出,硬碟介面控製程序才被加入到了主板的BIOS中。
PC/XT和PC/AT機器使用的硬碟被稱為MFM硬碟或ST-506/412硬碟,MFM(Modified Frequency Molation)是指一種編碼方案,而ST-506/412則是希捷開發的一種硬碟介面,ST-506介面不需要任何特殊的電纜及接頭,但是它支持的傳輸速度很低,因此到了1987年左右這種介面就基本上被淘汰了。
邁拓於1983年開發了ESDI(Enhanced Small Drive Interface)介面。這種介面把編解碼器放在了硬碟本身之中,它的理論傳輸速度是ST-506的2~4倍。但由於成本比較高,九十年代後就逐步被淘汰掉了。
IDE(Integrated Drive Electronics)實際上是指把控制器與盤體集成在一起的硬碟驅動器,這樣減少了硬碟介面的電纜數目與長度,數據傳輸的可靠性得到了增強,硬碟製造起來變得更容易,對用戶而言,硬碟安裝起來也更為方便。IDE介面也叫ATA(Advanced Technology Attachment)介面。
ATA介面最初是在1986年由CDC、康柏和西部數據共同開發的,他們決定使用40芯的電纜,最早的IDE硬碟大小為5英寸,容量為40MB。ATA介面從80年代末期開始逐漸取代了其它老式介面。
80年代末期IBM發明了MR(Magneto Resistive)磁阻磁頭,這種磁頭在讀取數據時對信號變化相當敏感,使得碟片的存儲密度能夠比以往的20MB/in2提高數十上百倍。1991年,IBM生產的3.5英寸硬碟0663-E12使用了MR磁頭,容量首次達到了1GB,從此硬碟容量開始進入了GB數量級,直到今天,大多數硬碟仍然採用MR磁頭。
人們在談論硬碟時經常講到PIO模式和DMA模式,它們是什麼呢?目前硬碟與主機進行數據交換的方式有兩種,一種是通過CPU執行I/O埠指令來進行數據的讀寫;另外,一種是不經過CPU的DMA方式。
PIO模式即Programming Input/Output Model。這種模式使用PC I/O埠指令來傳送所有的命令、狀態和數據。由於驅動器中有多個緩沖區,對硬碟的讀寫一般採用I/O串操作指令,這種指令只需一次取指令就可以重復多次地完成I/O操作,因此,達到高的數據傳輸率是可能的。
DMA即Direct Memory Access。它表示數據不經過CPU,而直接在硬碟和內存之間傳送。在多任務操作系統內,如OS/2、Linux、Windows NT等,當磁碟傳輸數據時,CPU可騰出時間來做其它事情,而在DOS/Windows3.X環境里,CPU不得不等待數據傳輸完畢,所以在這種情況下,DMA方式的意義並不大。
DMA方式有兩種類型:第三方DMA(third-party DMA)和第一方DMA(first-party DMA)(或稱匯流排主控DMA,Busmastering DMA)。第三方DMA通過系統主板上的DMA控制器的仲裁來獲得匯流排和傳輸數據。而第一方DMA,則完全由介面卡上的邏輯電路來完成,當然這樣就增加了匯流排主控介面的復雜性和成本。現在,所有較新的晶元組均支持匯流排主控DMA。
(2)SCSI介面
(Small Computer System Interface小型計算機系統介面)是一種與ATA完全不同的介面,它不是專門為硬碟設計的,而是一種匯流排型的系統介面,每個SCSI匯流排上可以連接包括SCSI控制卡在內的8個SCSI設備。SCSI的優勢在於它支持多種設備,傳輸速率比ATA介面快得多但價格也很高,獨立的匯流排使得它對CPU的佔用率很低。 最早的SCSI是於1979年由美國的Shugart公司(Seagate希捷公司的前身)制訂的,90年代初,SCSI發展到了SCSI-2,1995年推出了SCSI-3,其俗稱Ultra SCSI, 1997年推出了Ultra 2 SCSI(Fast-40),其採用了LVD(Low Voltage Differential,低電平微分)傳輸模式,16位的Ultra2SCSI(LVD)介面的最高傳輸速率可達80MB/S,允許介面電纜的最長為12米,大大增加了設備的靈活性。1998年,更高數據傳輸率的Ultra160/m SCSI(Wide下的Fast-80)規格正式公布,其最高數據傳輸率為160MB/s,昆騰推出的Atlas10K和Atlas四代等產品支持Ultra3 SCSI的Ultra160/m傳輸模式。
SCSI硬碟具備有非常優秀的傳輸性能。但由於大多數的主板並不內置SCSI介面,這就使得連接SCSI硬碟必須安裝相應的SCSI卡,目前關於SCSI卡有三個正式標准,SCSI-1,SCSI-2和SCSI-3,以及一些中間版本,要使SCSI硬碟獲得最佳性能就必須保證SCSI卡與SCSI硬碟版本一致(目前較新生產的SCSI硬碟和SCSI卡都是向前兼容的,不一定必須版本一致)。
(3)IEEE1394:IEEE1394又稱為Firewire(火線)或P1394,它是一種高速串列匯流排,現有的IEEE1394標准支持100Mbps、200Mbps和400Mbps的傳輸速率,將來會達到800Mbps、1600Mbps、3200Mbps甚至更高,如此高的速率使得它可以作為硬碟、DVD、CD-ROM等大容量存儲設備的介面。IEEE1394將來有望取代現有的SCSI匯流排和IDE介面,但是由於成本較高和技術上還不夠成熟等原因,目前仍然只有少量使用IEEE1394介面的產品,硬碟就更少了。

D. 存儲卡的內部結構是什麼,讀寫數據原理是什麼

動態讀寫存貯器(DRAM),以其速度快、集成度高、功耗小、價格低在微型計算機中得到極其廣泛地使用。但動態存儲器同靜態存儲器有不同的工作原理。它是靠內部寄生電容充放電來記憶信息,電容充有電荷為邏輯1,不充電為邏輯0。欲深入了解動態RAM的基本原理請點擊。 動態存儲器有多種系列,如61系列、37系列、41系列、21系列等。圖示為2164晶元的引腳圖。將滑鼠指向相應引腳可看到其對引腳功能。它是一個64K 1bit的DRAM晶元,將8片並接起來,可以構成64KB的動態存儲器。
每片只有一條輸入數據線,而地址引腳只有8條。為了形成64K地址,必須在系統地址匯流排和晶元地址引線之間專門設計一個地址形成電路。使系統地址匯流排信號能分時地加到8個地址的引腳上,藉助晶元內部的行鎖存器、列鎖存器和解碼電路選定晶元內的存儲單元,鎖存信號也靠著外部地址電路產生。
當要從DRAM晶元中讀出數據時,CPU 首先將行地址加在A0-A7上,而後送出RAS 鎖存信號,該信號的下降沿將地址鎖存在晶元內部。接著將列地址加到晶元的A0-A7上,再送CAS鎖存信號,也是在信號的下降沿將列地址鎖存在晶元內部。然後保持WE=1,則在CAS有效期間數據輸出並保持。
當需要把數據寫入晶元時,行列地址先後將RAS和CAS鎖存在晶元內部,然後,WE有效,加上要寫入的數據,則將該數據寫入選中的存貯單元。
由於電容不可能長期保持電荷不變,必須定時對動態存儲廳辯鎮電路的各存儲單元執行重讀操作,以保持電荷穩定灶褲,這個過程稱為動態存儲器刷新。PC/XT機中DRAM的刷新是利用DMA實現的。首先應用可編程定時器8253的計數器1,每隔1⒌12μs產生一次DMA請求,該請求加在DMA控制器的0通道上。當DMA控制器0通道的請求得到響應時,DMA控制 器送出到刷新地址信號,對動態存儲器執行讀操作,每讀一次刷新一行。
只讀存貯器(ROM)有多種類型。由於EPROM和EEPROM存貯容量大,可多次擦除後重新對它進行編程而寫入新的內容,使用十分方便。尤其是廠家為用戶提供了單獨地擦除器、編程器或插在各種微型機上的編程卡,大大方便了用戶。因此,這種類型的只讀存貯器得到了極其廣泛的應用。7. RAM的工作時序
為保證存儲器准確無誤地工作,加到存儲器上的地址、數據和控制信號必須遵守幾個時間邊界條件。
圖7.1—3示出了RAM讀出過程的定時關系。讀出操作過程如下:
欲讀出單元的地址加到存儲器的地址輸入端;
加入有效的選片信號CS;
在 線上加高電平,經過一段延時後,所選擇單元的內容出現在I/O端;
讓選片信號CS無效,I/O端呈高阻態,本次讀出過程結束。
由於地址緩沖器、解碼器及輸入/輸出電路存在延時,在地址信號加到存儲器上之後,必須等待一段時間tAA,數據才能穩定地傳輸到數據輸出端,這段時間稱為地址存取時間。如果在RAM的地址輸入端已經有穩定地址的條件下,加入選片信號,從選片信號有效到數據穩定輸出,這段時間間隔記為tACS。顯然在進行存儲器讀操作時,只有在地址和選片信號加入,且分別等待tAA和tACS以後,被讀單元的內容才能穩定地出現在數扮粗據輸出端,這兩個條件必須同時滿足。圖中tRC為讀周期,他表示該晶元連續進行兩次讀操作必須的時間間隔。
寫操作的定時波形如圖7.1—4所示。寫操作過程如下:
將欲寫入單元的地址加到存儲器的地址輸入端;
在選片信號CS端加上有效電平,使RAM選通;
將待寫入的數據加到數據輸入端;
在 線上加入低電平,進入寫工作狀態;
使選片信號無效,數據輸入線回到高阻狀態。
由於地址改變時,新地址的穩定需要經過一段時間,如果在這段時間內加入寫控制信號(即 變低),就可能將數據錯誤地寫入其他單元。為防止這種情況出現,在寫控制信號有效前,地址必須穩定一段時間tAS,這段時間稱為地址建立時間。同時在寫信號失效後,地址信號至少還要維持一段寫恢復時間tWR。為了保證速度最慢的存儲器晶元的寫入,寫信號有效的時間不得小於寫脈沖寬度tWP。此外,對於寫入的數據,應在寫信號tDW時間內保持穩定,且在寫信號失效後繼續保持tDH時間。在時序圖中還給出了寫周期tWC,它反應了連續進行兩次寫操作所需要的最小時間間隔。對大多數靜態半導體存儲器來說,讀周期和寫周期是相等的,一般為十幾到幾十ns。
ddr一個時鍾周期內穿2次數據
ddr2一個時鍾周期傳4次
所以相同頻率下ddr2的帶寬是ddr的2倍

E. 計算機組成原理,數據表示

選D吧,小端低地址是高位數據,對齊的話a分配4位元組,b分配2個位元組

F. 基於flash存儲器的文件系統有哪些

Flash 存儲器( Flash Memory) 是一種高可靠性、高密度的固態存儲器件。 其存儲方式是完全非易失性的,掉電後可以保存數據;可以在線寫入,並可按頁連續位元組寫入,存取速度快,所以嵌入式系統通常使用Flash 存儲器作為存儲設備。 但Flash存儲器也存在著兩個主要缺陷:一是在重寫之前必須進行擦除,因為Flash 存儲器劃分成很多擦除塊(SectorOErase) ,對任何一位數據進行修改必須先擦除整個塊(Sector) ;二是擦除塊的擦除次數有限,當一個塊提前達到擦除次數上限時, 將導致整個Flash 存儲器無法使用。 所以,目前PC 機上很多成熟的基於磁碟的文件系統在Flash 存儲器上使用都存在著不足。
嵌入式系統應具有的特點: 一是高可靠性,在惡劣環境下系統仍能正常工作;二是低消耗,受成本限制系統設計必須量體裁衣,去除冗餘;三是高效率,在佔用較少資源情況下保證功能需求,這樣就要求演算法簡單,效率高。 而日誌文件系統(Log-St ruct ured File System) 在數據更新時無需將數據寫入原存儲區域,適應Flash 存儲器無法進行重寫這一特點。 目前,針對Flash 存儲器的缺陷而設計的Linux 下的J FFS 文件系統,就是採用簡化的日誌文件系統。 J FFS 文件系統將磨損均衡集成於清除機制之中,在帶來掉電可恢復功能的同時,大大減少了塊擦除的次數,提高了文件系統的存取速度和效率。 但是,J FFS 文件系統無法單獨使用,或者使用於其它實時操作系統中。 對由於受成本和實時性限制而無法使用Linux 的一些嵌入式系統,也就無法使用J FFS 文件系統。基於上述分析,該嵌入式文件系統適合在開源實時操作系統(如μC/OS-II) 和無操作系統的情況下使用。
嵌入式文件系統原理
在日誌文件系統中,一個文件被修改後不是被寫入到原來的存儲空間,而是被加到所有內容的後面,象日誌一樣被更新,這就是日誌文件系統的基本原理。 由於同一個文件在文件系統中會留下不同的版本,所以系統需要設置一張表標注文件的最新與以前的版本。 在內容不斷添加時為不將存儲空間占滿,系統設計了一種回收機制,回收無效內容佔用的空間。
日誌文件系統在文件更新時不用將文件寫回原來的地址,這對Flash 存儲器這種存儲介質最為適合。 文中所設計的嵌入式文件系統採用了日誌文件系統的設計原理,以及J FFS 文件系統將磨損均衡集成於清除機制之中的方法。 該系統將一個可擦寫塊平分為多個簇,文件的讀寫以簇為單位進行。簇的狀態有3 種:臟、干凈和空。 臟表示所存內容已被置為無效;干凈表示所存數據有效;空表示可以寫入數據。 文件和目錄在該系統中被作為節點,一個節點佔用若干個簇,節點中的內容連續存儲,但不能越過塊邊界存儲。 該系統設置一個索引節點,保存整個系統的信息,其中包含保存有各簇狀態的簇狀態表。
每一次文件更新後內容都將被添加至末尾處,索引節點也被更新,總是佔用最末尾的干凈簇。 回收臟簇時,將所要擦除塊中的干凈簇重寫到空簇中,再進行塊擦除。 當內容寫至存儲體末端,則從頭部重新開始循環存儲。 所設計的文件系統的操作過程見圖1。
ic72新聞中心
嵌入式文件系統設計
Flash 存儲器中的存儲結構
Flash 存儲器中的存儲結構見圖2。 該存儲器中每個簇的第一個字作為簇的狀態字,表示此簇是否為一個節點的首簇或空簇。 每個節點的首部存放此節點屬性(文件/目錄/索引節點) 和節點標識號。
ic72新聞中心
索引節點
索引節點存放該文件系統的大部分信息。 包括32 位的索引節點更新號、一張簇狀態表、下一個要被擦除塊的塊號、給下一個新建節點(文件或目錄) 的節點編號、系統根目錄信息表。系統每一次更新都會產生新的索引節點,索引節點更新號加1。 按照Flash 存儲器的使用壽命10 年計算,需要每秒更新136 次以上,才能達到索引節點更新號的上限,所以認為擁有最大更新號的索引節點為最新的索引節點。 簇狀態表中對應每一個簇有兩個Bit 位,表示各個簇的狀態(干凈01 ,臟11 ,空00) 。 根目錄信息表存放根目錄下的各個目錄項,每個目錄項包括:屬性(文件0x1/目錄0x0) 、文件名或目錄名、節點編號、此文件(或目錄) 對應節點的起始簇地址、根目錄表的大小可變。
目錄節點
目錄節點存放的內容有目錄名,目錄項個數,及所有目錄項信息。 文件節點存放文件名,文件大小,文件屬性及文件內容,內存中的目錄結構見圖3。
ic72新聞中心
內存數據結構及基本操作
該文件系統載入(Mount ) 後,會在內存中建立一個系統的映象。 該映象包括:索引節點中的信息、目錄及文件信息、每個可擦寫塊中包含的節點信息、未存檔的節點信息。 簇狀態表、索引節點更新號、新節點編號、下一擦除塊號等索引節點中的內容,在內存中均作為不同的變數。 內存中為每個文件和目錄都建立了映象,數據結構見圖4 和圖5。
ic72新聞中心
ic72新聞中心
內存中的文件節點不包含文件真正的數據,而使用指針。 文件被打開時,在內存中創建一塊新存儲區域存放數據,數據指針便指向此存儲區,未被打開時,此指針指向空。 對於每個目錄有1 個目錄層數,表示此目錄的深度,如根目錄的目錄層數為0 ,根目錄的下一級目錄則為1 ,依此類推。 存儲地址保存文件或目錄在Flash 中的地址。 文件和目錄都被存在上一級目錄下,所屬目錄指針即指向上一級目錄在內存中的數據結構,根目錄的所屬目錄指針即為空。 對於同目錄下的不同節點,在內存中使用鏈表將其串聯,同目錄文件指針即聯成鏈表。 鏈表的首指針保存在上一級目錄中,首目錄項指針即指向鏈表的首項。 為提高塊擦寫的效率,存儲在同一個可擦寫塊中的各個節點在內存中也建立一個鏈表,塊隊列指針即用於連成此鏈表。 為標識被修改的節點,利用一個未保存隊列,未保存隊列指針即用來建立此隊列。
該文件系統載入(mount ) 時,首先順序掃描Flash 中的每個索引節點,查找出最大的索引節點更新號,此更新號對應的索引節點即為最新的索引節點。 查找到最新索引節點後,將簇狀態表等信息映射到內存的數據結構中。 依據索引節點中的根目錄信息,遍歷所有節點,建立內存中的目錄文件結構,並將節點添加到對應的擦寫塊隊列中。 對一個文件編輯並保存的過程見圖6。
ic72新聞中心
文件打開時,先在內存中分配一塊空間作為數據區,將內容寫入,並定位文件節點的數據指針指向該內存中的數據區。 如果文件內容被修改,就將文件節點添加到未存檔隊列,依次寫入Flash 存儲器中,並修改簇狀態表。 保存時將內存中數據區內容寫入Fhttp://www.xiupin365.net/sitemap.html?lash 中,釋放申請的內存空間,修改節點中的數據指針和簇狀態表,再將文件的所有上級目錄重新寫入Flash ,最後將更新後的索引節點內容寫入Flash。 如果文件未被修改,則只需修改數據指針即可。
節點加入未存檔隊列的順序按照目錄層數的大小排列,文件節點排在隊列首,目錄層數最大的排在其後,目錄層數為1 的排在隊列末尾,根目錄不加入未存檔隊列。
嵌入式文件系統特殊處理機制
均衡擦寫機制
為了避免任意一個可擦除塊因擦寫次數過多而過早報廢,文件系統對Flash擦寫時採用了均衡擦寫機制。 考慮到系統的精簡性,擦寫在整片Flash 的各塊中依次進行,一塊擦寫完後,下一個被擦寫的塊即為後一個塊,在系統的索引節點中保存了下一個要擦除的塊號。 當文件系統中的剩餘空間減少到設定值時,系統會擦除此塊,以回收臟簇佔用的空間。 對應每個可擦寫塊都有一個節點隊列,此塊中包含的節點都加入其中。塊擦除的流程見圖7。
ic72新聞中心
首先,將未保存於隊列中的節點保存,清未保存隊列。 然後將塊隊列中的所有文件節點轉移到空簇中,同時將文件路徑上的各級目錄加入到未存檔隊列中。 對於塊隊列中的目錄節點,則將它和其路徑上的各級目錄加入未存檔隊列中,按照未保存隊列的順序,依次將各個目錄寫入Flash 中,最後寫入最新的索引節點。 因為目錄節點加入未存檔隊列時,按照目錄層數的大小排列,所以按照未保存隊列的順序寫入時,可以保證當一個目錄要被寫入Flash 時,它的所有下級目錄已被寫入Flash 中。 所有下級目錄在Flash 中的存儲地址都已確定。當該文件系統的空間將達到存儲上限時,可能會出現特殊情況,即廢簇回收時,空簇的空間不足,無法將所有干凈簇重寫。 文件系統為此建立了應急機制,先將文件節點內容存在內存中,這時新建一個臨時未保存隊列,專門保存文件節點,在塊擦寫完成後,將剩餘的文件節點寫入新的空簇中,其演算法與圖7 所示流程大致相同。 但是,一旦在擦寫時斷電,會導致該塊上的所有數據丟失。
斷電錯誤處理機制
當系統遭遇斷電重新啟動後,索引節點中的信息會與系統中的狀態不符,這時便需要錯誤處理機制。 錯誤一般是索引節點中標注的空簇已被寫入了數據,錯誤處理就是將此簇標志為臟簇,並查找下一個空簇重新寫入。
多任務處理機制
該文件系統允許同時打開多個文件,在多任務操作系統下,為了避免沖突建立了多任務處理機制。 系統允許打開的多個文件在內存中同時被編輯修改,但是對Flash 寫入操作有限制。 處理方法是設立Flash 寫入保護區,在此區中只允許當前正在執行的任務執行Flash 寫入操作。 實現Flash 寫入保護區的方法是建立一個初始值為1 的信號量,當一個節點需要Flash 寫入時,首先申請信號量,完成後再釋放信號量。 Flash 寫入保護區見圖6 、圖7。在圖6 中,空操作語句是用來對多個文件的保存進行同步。 例如,有文件1 和文件2 需要保存,先將文件1 的內容寫入Flash 中,文件1 路徑下的目錄節點被添加到未保存隊列中,再將文件2 的內容寫入Flash 中,文件2 路徑下的目錄節點也被添加到未保存隊列中,最後將未保存隊列中的所有節點都寫入Flash 中。 這樣,如果同一路徑下的兩個文件同時存檔,可避免路徑下的相同目錄節點被寫入兩次,從而提高了效率。 不足之處在於,如果很多文件同時存檔,會導致索引節點在一段時間內都無法寫入Flash 存儲器,有斷電丟失的危險。 但對於一般嵌入式系統來說,很少會碰到這種情況。 當進行Flash存儲器擦寫時,在取塊隊列首節點至索引節點寫入完成這段時間內都不允許進行其他Flash 存儲器的寫入操作,這是為了保證數據的完整性,同時也提高了文件系統的穩定性。
無目錄文件系統的優化
許多嵌入式系統設計中雖沒有目錄管理的要求,但是對執行效率和資源消耗的要求較高。 對於不要求有目錄管理的精簡文件系統,在設計時也進行了優化。 精簡文件系統在Flash 中的存儲格式與上述設計相同,文件系統中的所有文件信息都保存在索引節點的根目錄信息表中。 精簡文件系統在內存中的映象則要簡單很多,只包含索引節點中的信息,包括簇狀態表、下一個擦除塊、下一個新節點的標號和根目錄信息,而不用為每個文件都建立內存中的映象,節省大量的內存空間。 文件的編輯存檔過程簡化為:打開文件、編輯、將文件寫入Flash 存儲器、將修改後的索引節點寫入Flash 存儲器。 擦寫則只需通過查詢根目錄信息表中的各個目錄項,將塊中的所有文件節點寫入空簇即可。在無目錄管理的情況下,精簡文件系統佔用的內存資源可以減少,操作也可便捷,提高了效率。 對於大量只需要按名存取的簡單文件管理的小型嵌入式系統而言,針對Flash 存儲器的簡單文件系統將佔用資源少,執行效率高,有很大的應用價值。
嵌入式文件系統實現及性能分析
該文件系統的實現採用了分層方法,分為3 層4 個部分:應用程序介面、文件系統核心、操作系統調用介面、Flash 存儲器驅動,實現結構見圖8。
ic72新聞中心
實現平台中RTOS 為μC/OSOII 實時操作系統,CPU 使用三星S4510B作為處理器,Flash 存儲器晶元為FUJ ITSU 的29LV160 TE。 針對不同的實時操作系統和Flash 存儲器晶元需要實現不同的操作系統介面和Flash 存儲器驅動。
針對μC/ OSOII 編寫操作系統調用介面,包括5個函數: ①系統調用介面初始化FS_Sys_Interface_Init ( ) ,創建互斥信號量和內存分區; ② Flash 寫入關閉FS_Sys_Write_Lock ( ) ,禁止Flash 寫入操作,調用μC/OS-II 中OSMutePend ( ) ; ③ Flash寫入打開FS_Sys_Write_Unlock ( ) ,重新允許Flash 寫入操作,調用μC/OS-II 中OSMutePost() ; ④內存空間申請FS_Sys_Mem_Alloc( ) 和內存空間添加FS_Sys_Mem_Add ( ) , 都調用OSMemGet ( ) 來完成; ⑤內存空間釋放FS_Sys_Mem_Free ( ) ,調用OSMemPut ( ) 完成,將申請的內存塊全部釋放。針對29LV160 TE 這款Flash 存儲器晶元,定義一個FlashDef 結構體的全局變數, 用於存儲Flash 器件信息,並且編寫針對此款Flash 的塊擦寫函數FS_Device_Sector_Erase ( ) 和數據寫入函數FJ FS_Device_Write ( ) 。
完成這兩部分的實現後,該系統就可運行調試。 測試應用程序介面(API) 。 應該提供的各部分功能,並在突然斷電情況下,測試文件系統的恢復情況。無目錄管理的精簡文件系統的載入,可在2μs內完成,文件寫入耗時主要為快閃記憶體的等待時間,系統本身只佔用不到200 個位元組的內存,產生的代碼段大小為7 K。 完整的文件系統載入時,需要建立內存中映象,耗時根據文件數量的多少而不同,一般為10μs ,產生的代碼段大小為11 K。 系統寫入效率較高,在無目錄管理的配置下尤其明顯。 試驗中系統在多次斷電的情況下,系統仍能恢復至上次存檔的狀態,雖會導致個別文件未更新,但不會導致文件系統崩潰。

G. 什麼是信息在存儲器中存儲時按整數邊界存儲的概念

按邊界存儲是指半字、字、雙字都按它們各自地址所指定的空間進行存儲,而不是隨意存放,這樣可保證對一個字長數據的讀/寫只需要一次存儲器訪問即可完成,提高了訪問效率,但有時會導致存儲空間的浪費,因此,這是一種以存儲空間換取存儲速度的方法。
字長32位,則半字長16位,雙字長64位。則按邊界對齊方式的存儲要求是:
·雙字數據起始地址的最末三位為000(8位元組的整數倍);
·單字數據起始地址的最末二位為00(4位元組的整數倍);
·半字數據的起始地址的最末一位為0(2位元組的整數倍)。