❶ 為什麼說SDRAM載入模式寄存器是一個8位的操作
計算機當前主要有三種內存,它們分別是:SDRAM(Synchronous Dynamic RAM),DDR-SDRAM(Double Data Rate SDRAM)以及RDRAM(RAMBUS Dynamic RAM)。這篇文章將詳細討論這三種內存,注意當前市場的主流內存DDR-SDRAM已經又劃分出若干版本(如DDR-II或GDDR3),這里只是統一介紹DDR-SDRAM的特點。 SDRAM(同步動態隨機存取存儲器) SDRAM是早期內存EDO(Extended Data Output)DRAM內存的改進版本。EDO常見於486或老奔系統上面,其主要缺點在於內存頻率和系統頻率不一致(不同步),這樣將隨機出現延遲和等待狀態(處理器等待內存傳輸可用的數據),因此對系統的整體性能影響巨大。SDRAM初始頻率為66MHz,這和當時的系統頻率相一致。同步的好處顯而易見,能夠消除不必要的等待時間,盡量保證系統穩定高速的運行。除此之外SDRAM還能夠在一個時鍾周期之內完成數據存儲請求和取回操作,並且能夠在下一個時鍾周期內准備好數據的傳輸和接收工作。 DDR-SDRAM(Double Data SDRAM)在SDRAM規格之後,DDR-SDRAM的出現又是一次技術的進步。隨著處理器時鍾頻率和前端匯流排頻率的飛速提升,處理器在一段時間內能夠處理的數據總量變得越來越巨大。例如當前的INTEL和AMD的主力產品Pentium 4和Athlon XP的運算速度已經達到了每秒數十億次的驚人程度。僅僅從晶元的時鍾頻率看,處理器的性能已經非常了不起了,但由於有限的內存帶寬,系統整體性能仍然受到了局限,因此傳統的SDRAM內存已經不能夠滿足新處理器對數據的需求。 DDR-SDRAM在原有的SDRAM基礎上使每一個時鍾周期輸出的數據變為兩倍,相當於達到了同頻率的SDRAM的最大理論帶寬的兩倍,從而極大地提升了原本緊缺的內存帶寬。DDR-SDRAM輸送和接受的數據都明顯要多於SDRAM。這對於當前的Athlon XP和Pentium4來說是最合適的搭配了,為了適應不同匯流排頻率的處理器,DDR-SDRAM也衍生出多種不同速率的內存模塊。 DDR-SDRAM採用184針DIMM模塊,目前主要有以下幾種速率:PC1600(200MHz),PC2100(266MHz),PC2700(333MHz),PC3200(400MHz),PC3500(433MHz),PC3700(466MHz),PC400(500MHz),PC4200(533MHz)和PC4400(566MHz)。名稱中的第一個數字,如「PC2100」意為此內存模塊的最大帶寬,也就是每秒最大能夠提供多少MB的數據。後面的MHz是此內存運行時的時鍾速率。單根DDR-SDRAM的容量從64MB到2GB不等。 RDRAM(RAMBUS Dynamic RAM) RDRAM在現在的桌面PC市場上面已經基本絕跡。和DDR-SDRAM不同,RDRAM是一種專利內存標准,由RAMBUS開發研製成功。在1998年RDRAM第一次通過INTEL的鼎力協助進入桌面電腦市場,和高端的Pentium III以及早期的Pentium 4捆綁銷售。不過遺憾的是,RAMBUS很快便因為內存技術專利費用的問題捲入了與英飛凌和現代等眾多內存生產商的一系列官司糾紛中。由於RAMBUS對RDRAM技術收取專利費用,導致RDRAM價格昂貴,從而抑制了Pentium 4市場的銷售,引發了INTEL的不滿。再加上一系列的官司讓眾多內存生產商聯合起來抵制RDRAM,轉而生產DDR-SDRAM,讓RDRAM失去了佔領家庭用戶和PC發燒友市場最好的機會。
❷ 學過編譯原理的人看c\c++跟沒學過的人比起來,有什麼長處
一般來講...沒學過C\C++就跟編程文盲差不多...C\C++是基礎,在這之上才能看很多.包括數據結構和演算法(用匯編實在難以描述),或者學習其他編程語言.
讓我難以理解的是,學習編譯原理應該需要學習數據結構,但是樓主又沒有學過C\C++,又是怎麼學會數據結構進而理解編譯原理??我很納悶....樓主有無寫過一個簡單的編譯器?純匯編是很難寫編譯器的,在編譯器的詞法分析,語法分析,語義分析,中間代碼等都基本用C\C++寫,只有當要生成特定的CPU匯編指令的時候需要用匯編語言.
學習操作系統基本不需要過多編譯原理的知識,只需要 匯編+C語言+數據結構和演算法基礎,基本就可以了.
附加一段:樓主好像對編譯原理的理解有所偏差.編譯原理主要是講解編譯器的構造,而匯編語言應該屬於一種編程語言,和C\C++一樣可以應用於很多場合.編譯器原理就是如何把高級語言轉換為低級語言的過程.
一般操作系統使用 匯編語言+C語言寫成.(以下是Intel IA-32平台機器的一般開機過程)在計算機啟動時,操作系統從匯編代碼開始運行,因為這時處於實模式狀態,也沒有操作系統,因此首先啟動BIOS程序,然後CPU通過編譯好的匯編代碼從實模式轉入保護模式.接著逐步把PC的控制權交給操作系統內核,當內核啟動後,由於有了操作系統的支持,此時的機器就可以通過高級語言編譯好的代碼(比如C語言)來管理PC的所有資源.因此,學習操作系統必須有匯編語言和C語言基礎.不然例如進程調度和控制等這種核心問題是不可能看的懂的.
❸ 怎麼理解匯編中SP寄存器的出棧壓棧
類似於山洞探險,怎麼進去,還要怎麼出來。
腦子裡面,就要記住走過的路。
退出時,後記憶的,應該先想起來。
程序,也是這樣,子程序套子程序,子程序再套子程序,怎麼才回到主程序?
就必須使用堆棧來保存歷史信息。
❹ 有一個寄存器壓棧是什麼體驗
子程序套子程序,子程序再套子程序,怎麼才回到主程序?就必須使用堆棧來保存歷史信息。很麻煩。
❺ 棧與寄存器的關系
ss:stack segment(段寄存器)
ESP:棧頂指針寄存器
EBP:棧底指針寄存器。
學過匯編語言就知道了,寄存器是CPU的組成部分。他們告訴CPU線程的棧在內存的什麼地方,也就是地址。
❻ 匯編語言中在程序開頭為什麼要寄存器入棧,求詳細解釋一下,謝謝
如果程序要調用或者響應中斷的話,要將寄存器,標志位等壓棧,這是為了保護現場,方便調用或中斷響應結束後繼續執行原程序。你可以根據程序來具體分析。
❼ 16位CPU在進行堆棧操作時,分別用到的寄存器有哪些
了解CPU,是為了便於我們今後對單片機軟體的編程有一個方向性的把握,我們可以更好的知道程序在執行過程中,它的每一段代碼在干著一件什麼樣的事,它的時序是什麼樣的,從而提升我們對CPU更有效的利用。
對於stm8單片機的CPU,它有六個寄存器,我們需要了解裡面有著重要功能的幾個(直接和我們寫代碼相關聯),知道它們的作用。
1.累加器:A。8位通用目的寄存器,用於算術運算、邏輯運算以及數據操作的操作數及結果。
2.索引寄存器(X和Y)。16位,用於定址,也可用作數據操作的暫存器以及用於像乘除法這樣的操作。
3.程序計數器(PC)。24位,用於存儲CPU下一條要執行指令的地址。
圖1 CPU的寄存器
4.堆棧指針(SP)。16位,用於在中斷調用或子程序調用時存儲CPU的上下文(程序計數器,關鍵寄存器,相關函數的參數及局部變數,等等)。下圖顯示了入棧出棧順序。
圖2 入棧出棧順序
如果我們自己在相應軟體下寫代碼進行debug模式時,可以看到CPU中各寄存器的運行狀況,這是一個參考了。
最後,我們了解CPU的一個不常用的寄存器:CFG_GCR(是否我們想使用其SWIM功能)。通常我們使用SWIM功能用於下載程序使用。如果我們恰好想要使用其IO口模式,可以在此處配置。
❽ 匯編中,進棧出棧對棧指針寄存器值的影響,對出棧寄存器值的影響。
對於windows這種向下生長的堆棧
進棧
則ESP減
出棧則ESP加
向上生長的堆棧則反過來
❾ 堆棧定址方式中,設A為通用寄存器,SP為堆棧指示器
選A,先把棧頂單元放入通用寄存器A,再增加堆棧指針。
❿ 關於編譯原理,堆棧,變數存儲相關的一個問題,請高手釋疑
是這樣的, scanf是一個函數(該函數已經定義了),而「scanf()」這就話就是如何使用該函數的。
到你知道什麼是函數的時候你就懂了。
就像數學中y=f(x) 函數,例如:y=2*x 。
當你設置一個x的值後,你就可以通過該函數獲取對應的y值。