問問大家,為什麼要給記憶體加乙個時鐘訊號?

時間 2021-06-22 18:28:27

1樓:

計算機元件包括記憶體都是離散操作,應該說數碼訊號都是離散訊號。就記憶體而言就包括但不限於這幾個方面需要時鐘來處理離散訊號:順序讀寫的時候需要用時鐘控制讀寫速度、併發讀寫的時候保證所有操作的原子性(比如說某個 byte 本來是 00000000,同時有 1111111 的寫入與乙個讀取操作,此時的讀應當要麼是 00000000 要麼是 11111111,而不是諸如 10011000 之類的不完整訊號)。

2樓:王俊

很好的問題,你能提出這個問題,老師就知道你有認真思考,但基本上課也沒整明白啥…

簡單做個比喻:

你有一把水槍,你按一下就會射出點水。你要把水全部射到乙個桶裡。

你一秒按一下水槍,按了很久才把水全部射到桶裡了。這裡一秒按一下其實就是加了乙個時鐘訊號,一秒觸發按一下。

於是你問為什麼要有時鐘訊號,一秒按一下?

水桶要水,直接就按一下水槍,把水全給水桶不就行了,SO,你明白問題出在哪了嗎

3樓:我是不會呀

任何過程的展開都是在時間維度上進行的,任何過程都有始有終,過程的完成需要時間,不管這個過程的完成需要的時間有多麼短。

首先給了記憶體乙個位址訊號,然後從記憶體接收到訊號,從儲存陣列中取出資料,最後放到資料匯流排上面,這和過程需要時間。那麼如何去度量這個過程什麼時候開始?開始之後持續多久?

在多久後的未來完成?顯然需要時鐘,這個是時鐘的存在意義,時鐘的意義在於精準的度量乙個過程的起始,提高步驟之間的連續性,提高執行的效率。反問一下,如果沒有時鐘,那麼計算機如何判定乙個單一過程執行是否完成?

比如說,把位址放到匯流排上,計算機如何判斷在未來多久後記憶體將把資料放到資料匯流排上,從而去讀取資料?

時鐘的存在不是減慢了速度,反而是追求速度的必然需要。

4樓:康巨集嘉

肯定是要有同步機制的啊,什麼時候寫什麼時候讀,現代CPU都是流水線設計,如果沒有時鐘訊號的話,如何確保在流水線上,執行指令的每乙個步驟都在被規定的時間範圍內?

比如對於記憶體來說,一般是訪存階段才會用到記憶體,那麼這個時候後面一條流水線肯定要在這條流水線的訪存結束後,才開始訪存階段,這個時候通過時間訊號統一調控,時間訊號確保該流水線的訪存階段結束,下一條流水線的訪存階段開始。因此對於乙個流水線CPU來說,時鐘頻率也不能太高,太高的話會造成資料還沒取出來,但時鐘訊號已經允許後面一條流水線包含的資料覆蓋了記憶體。這個時候肯定會造成記憶體資料出錯。

沒時鐘訊號的話,就沒有同步機制,那就更沒辦法實現流水線。

為什麼乙個程序對共享記憶體的寫入另乙個程序可以立即可見?不考慮cpu的cacheline嗎?

張驍 這事的根本在MMU上,實體地址與邏輯位址的對映實現的。簡化思維,你我分別是兩個不同的程序,住在兩間不同的屋子裡,房間裡有一面分隔成很多小方塊的玻璃牆,這面玻璃牆就是專屬於我們各自的記憶體 邏輯記憶體 而實際上,這些個小方塊都是通過複雜而巧妙的機構對映到遠方的一大塊黑板上 物理記憶體 我們看到的...

C 語言開啟乙個檔案時,緩衝區在記憶體的什麼位置?

唐浩然 在使用者空間的棧的下方,堆的上方的 mmap區。對於系統來說,應用程式的mmap區的檔案可能在作業系統的 pache cache中 王飛 一般開啟並讀取乙個檔案,傳統方法就是兩個系統呼叫,對吧 int open const char path int oflag mode t mode ss...

想問問大家,你們都是怎麼判斷乙個女孩是不是可以結婚的物件的?

明天早上好 心底善良,有同情心,不作,不矯情,脾氣好,不拜金,如果你能找到以上這樣的女生你已經成功一半了!乙個女人貴在安分守己,不管她的老公多麼有錢還是多麼窮,她都會始終陪在老公身邊不離不棄,而不是說看你破產了馬上離開你找個有錢人,還有賣豬看圏,談戀愛的時候先去她家看看嚴禁未婚先孕把結婚證領了再去老...