SPI 讀取不同長度 寄存器_[讀書筆記]《計算機科學速成課》—6 寄存器和內存

上節中介紹的ALU進行計算后得到的結果需要對其進行存儲,可能還要進行多個連續操作,這就需要用到計算機內存了。計算機使用的是隨機存取存儲器(Random Access Memory, RAM),其只能在有電的情況下存儲東西。另一種存儲稱為持久存儲(Persistent Memory),電源關閉時數據也不會丟失,它用來存其他東西。

這一節中首先構建能夠存儲1位的存儲器,然后對其擴展來得到內存模塊。

之前構建的都是單向電路,我們同樣可以構建回向電路,把輸出連回輸入。

48daa0138a410b8f1d3b1e6316638900.png
存儲1的電路

當將OR門構建成回向電路時,可以分析其電路特性

  1. A和B初始為0時,輸出結果為0
  2. 將A修改為1時,輸出結果為1,此時B的輸入就變為了1。隨后輸出始終保持為1,不論A如何變化。

所以這個電路能夠永久記錄1,并且無法將1變回0。

39c23cceacad4dd71d4da82acaf28ea1.png
存儲0的電路

同理可以分析下AND門構建成回向電路時的特點

  1. A和B初始化為1,則輸出結果為1
  2. 將A修改為0時,輸出結果為0,此時B的輸入就變成了0。隨后輸入始終保持為0,無論A如何變化。

所以這個電路能夠永久記錄0,并且無法將0變回1。

所以我們就得到了能夠存儲1和0的電路,為了得到有用的Memory,需要將兩個電路結合起來,可以得到AND-OR鎖存器(AND-OR Latch),上方的是SET輸入,下方的是RESET輸入,當SET=1、RESET=0,就能將輸出設置為1,當RESET=1,就能將輸出設置為0,當SET=0、RESET=0,則輸出最后放入的內容。由此能夠存儲1位的信息(該信息存儲在OR門上方的輸入電極中)!

78f209a912ca4586254ca9e88e70029a.png
AND-OR 鎖存器
技巧:當OR門其中一個輸入為0,或AND門其中一個輸入為1,則相當于另一個輸入直接穿過這個門。當OR門其中一個輸入為1,則直接輸出1;當AND門其中一個門為0,則直接輸出0。

這叫"鎖存", 因為它"鎖定"了一個值,放入數據的動作叫 "寫入" ,拿出數據的動作叫 "讀取"。

對其進行SET和RESET進行合并,并添加其他門控單元,可以得到一個門鎖(GATE LATCH)

2a8a30ab85b62f4c4c11de5a65802a2e.png
門鎖

其中DATE INPUT表示數據輸入,WRITE ENABLE表示允許寫入線,用來控制是否保存當前輸入的數據。對這個電路進行分析。

  1. 當WRITE ENABLE=1時,電路可以化簡為以下形式。當數據輸入為0時,AND門可以忽略OR門的輸出,直接輸出0,并且OR門上方電極也將保存0。當數據輸入為1時,相當于忽略了AND門,OR門的輸出直接和OUTPUT相連,OR門輸出1,并且OR門上方電極也將保存1。所以,當WRITE ENABLE=1時,數據輸入會直接傳到輸出,而且數據輸入會保存在OR門的上方電極,進行數據存儲。

61e0632b4762bd31d634ad098d4cdaad.png

2. 當WRITE ENABLE=0時,電路可化簡為以下形式。此時能夠忽略AND門,直接將OR門的輸出當做OUTPUT,而OR門的輸出其實就是上方電極的數據,由于上方電極就是當前OUTPUT的數據,所以會保持OUTPUT不變。所以,當WRITE ENABLE=0時,會忽略數據輸入,保持OUTPUT不變。

bf90a78b02b60386f348fd60f87e0da4.png

可以將門鎖進行抽象,得到一個能夠存儲一個bit的部件。當允許寫入線為0時,輸出保持不變,當允許寫入線為1時,輸出就是數據輸入,并且能夠將數據輸入進行存儲。

f2f95ce5329820794771920db310b90b.png
門鎖的抽象

如果我們并排8個鎖存器,就能存儲8位信息。一組這樣的鎖存器稱為寄存器(Register),寄存器能夠存一個數字,這個數字的位數稱為寄存器的位寬(Width)

寫入寄存器之前,要先啟動里面所有的鎖存器,可以將所有鎖存器的允許寫入線都連接在一起,把它設為1,然后用8條數據線發送數據,然后將允許寫入線設回0,就能將8位數據存儲在寄存器中。

0c4cba40df854f469aa438dd8a22a86d.png

但是通過這種形式排列鎖存器需要太多的線路,64位寄存器需要129條線,256位寄存器需要513條線,可以通過矩陣形式排列來進行化簡。我們可以構建16x16門鎖矩陣(Latch Matrix),其中一共有256個,通過打開相應的行線和列線來啟用某個鎖存器。

0d86e8a37026ac603f61cb63c68634e3.png
門鎖矩陣

局部更大的細節如下圖所示。首先,只有當行列都為1時,設置WRITE ENABLE和READ ENABLE才有用,否則這兩條線的經過AND門的輸出始終為0。當WRITE ENABLE=1時,輸入數據就會保存在門鎖中。當READ ENABLE=1時,就會連通晶體管,將存儲在門鎖中的數據輸出。這里添加了一個READ ENABLE線來控制讀取,同時將輸入輸入和數據輸出線合并,從3條線減少為2條。并且由于每次能夠控制唯一一個鎖存器,所以所有的數據線可以合并成一條。也就是說,對于256位存儲,只需要一條數據線,一條允許寫入線,一條允許讀取線和16行16列的線用來選擇鎖存器,一共35條線。

62968984c99553021b5db02a6bbcdbd1.png
門鎖矩陣局部細節

由于16x16門鎖矩陣最多16行16列,所以可以分別用4位表示行和列的地址,就能用一共8位來定位一個鎖存器,比如“12行8列”可以表示為11001000。

為了將地址轉換成“行和列”,需要多路復用器(Multiplexer),多路復用器可以有不同的大小。當輸入一個4位數字,它就會將那根線連接到對應的輸出線,比如對列地址輸入0000,它就會選擇第一條線,輸入0001,就會選擇第二條線……有一個多路復用器處理行,一個多路復用器處理列,由此通過輸入行和列的坐標就能定位到對應的鎖存器了。

25379a9aff3c61598096eaf794e6492c.png
多路復用器

可以對256位寄存器進行封裝,它的輸入是一個8位地址,4位表示行,4位表示列,同時需要允許寫入線和允許讀取線,然后需要一條數據線用于讀寫數據。(注意:每次只能選擇一個鎖存器,所以數據線只能讀寫1bit數據

8da35fd277361fefe4b05cd3df44ea82.png
256位內存

對其再進步一擴展,可以將8個256位內存拼在一起,這樣就能一次讀寫8bit數據,也就是一個字節數據。由于每個256位內存都使用相同的8位數據線,因此8位數據會存在每個256位內存的相同地址中,并且第一個256位內存存放第一位,第二個256位內存存放第二位,以此類推。這個模塊可以在256個地址中存儲256個字節。(由于這種設計,所以計算機中以一個字節為尋址的最小單位)

50546805877b5cf3237180db7def3bb5.png

可以對其進行抽象,看成一個整體的可尋址內存,其中有256個地址,每個地址能讀寫一個字節的值。

d0c5fa0dcdf141c810b3041321f3abaf.png
RAM

現代計算機可以在此基礎上將內存擴展到MB和GB級別。我們這里使用8個16x16門鎖矩陣可以得到256字節的內存,然后可以用4位表示行4位表示列來進行尋址,由此可以將門鎖矩陣擴展到更大范圍,但是需要更多位來表示地址。所以對于nxn門鎖矩陣,存儲空間為

字節,需要的尋址空間為
。比如要給千兆字節的內存尋址,就需要32位的地址。

內存的一個重要特性是:能夠隨時訪問任何位置。所以稱為隨機存取寄存器(Random Access Memory, RAM)。RAM只記錄當前在做什么。

RAM中存儲的數據是保存在OR門其中一個電極上,所以斷電后就無法保存。

這一節用鎖存器做了一塊靜態隨機存取存儲器(Static Random-Access Memory,SRAM),還有很多其他類型的RAM,比如DRAM、閃存和NVRAM,它們的功能和SRAM相似,但是使用不同的電路存放單個位。但是根本上,這些技術都是矩陣層層嵌套來存儲大量信息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529200.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529200.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529200.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

one more step_KDA新歌《MORE》的一些冷知識:伊芙琳換回原聲,摩托車是定制的

原標題:KDA新歌《MORE》的一些冷知識:伊芙琳換回原聲,摩托車是定制的KDA女團在2020年宣布回歸后就引發了很多的關注,回歸后也是推出了首支單曲《THE BADDEST》,這首歌在之后也引發了不少網友的模仿以及翻唱&#xff0c…

java jdbc連接 代碼塊_java 中JDBC連接數據庫代碼和步驟詳解及實例代碼

?創建一個以JDBC連接數據庫的程序,包含7個步驟:1、加載JDBC驅動程序:在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法forName(String className)實現。 例…

Java不是true值不變_Java語言中String a=a;String b=a; 為什么 a==b 值為 true?

目前排名比較靠前的答案都回答得很淺顯易懂了。我這里給你一個最可靠的理論依據(雖然比較晦澀)。Java語言規范(JavaSE 1.8版本)章節3.10.5中對此作了規范,因此所有的Java語言編譯、運行時環境實現都必須依據此規范來實現。里面有這么一句話Moreover, a string liter…

計算H時M分S秒以后是_關于工程量計算-深圳工程量計算培訓

一、梯形體積計算公式?第一種:梯形的體積(上底下底)高2總長度第二種:把四棱臺延長成椎上截面面積為s,下截面r,臺高為h,那么體積1/3(r-s)*h.若是正梯形物體則為V〔S1+S2+開根號(S1*S2…

java數據庫edit_Java數據庫連接——JDBC基礎知識(操作數據庫:增刪改查)

一、JDBC簡介JDBC是連接java應用程序和數據庫之間的橋梁。什么是JDBC?Java語言訪問數據庫的一種規范,是一套API。JDBC (Java Database Connectivity) API,即Java數據庫編程接口,是一組標準的Java語言中的接口和類,使用這些接口和類&#xff…

java ssm 系統的搭建_SSM框架下的javaweb學生管理系統--搭建系統結構

業務需求:一個登錄頁面,一個學生展示頁面,添加、修改、刪除三個功能目的是給大家了解一個初級系統的構造,不寫那么復雜的需求了。從第一步開始:創建項目打開eclipse,點擊右上角的File-->New-->Dynami…

opencv 高通濾波和低通濾波_濾波電路合集(低通濾波,CLCП濾波,DLC濾波,CRC П濾波)...

常見低通濾波電路L 一階濾波C 一階濾波CL 二階濾波RC 二階濾波LC 二階濾波RCR T型三階濾波LCL T型三階濾波CRC π三階濾波CLC π三階濾波開關電源 單級低通濾波回路DLC 型二階濾波器開關電源 雙級串聯式低通濾波回路CLC П型濾波器1、工作原理介紹a.輸入正脈沖時,先給C1充電,充…

matlab語音信號處理實驗_現代通信綜合實驗系統平臺

現代通信綜合實驗系統平臺近30年來,隨著我國電信行業的迅猛發展,該行業的發展水平已成為衡量一個國家實力的一大關鍵因子。行業的發展同時,為當代相關專業大學生創造了極大的就業市場,市場對通信類人才有著極大的需求。培養一代全面型通信類人…

java 異常拋出空指針異常_java.lang.NullPointerException 拋出空指針異常

練習cookie做一個瀏覽商品記錄顯示,第一次會顯示瀏覽過的商品,然后在瀏覽第二次就出現空指針異常2016-6-16 16:51:48 org.apache.catalina.core.StandardWrapperValve invoke嚴重: Servlet.service() for servlet [CookieDemo2] in context with path [/…

iphone儲存空間系統怎么清理_教你快速清理 iPhone 系統緩存垃圾,拒絕卡頓!

「 改變能改變的一切,接受不能改變的一切!」▼“iPhone存儲空間”里的系統為何占用了幾十G的甚至上百G的內存,如何清理?當我們使用 iPhone 一段時間之后,系統或應用中會出現一些多余的緩存數據,如果長時間不…

倒N字形排列java_Java排序8大算法實現

概述排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。我們這里說說八大排序就是內部排序。當n較大,則應采用時間復…

cross_val_score 如何對孤立森林_【收藏】森林防火手抄報素材匯總!

森林防火手抄報模板參考【文字素材參考】01森林防火根據森林火災燃燒中央地點,蔓延速度,受害部位和程度,大致可把森林火災分為三大類:一.地表火 二.樹冠火 三.地下火。以受害森林面積大小為標準,森林火災分為以下四類:1.森林火警:…

java io 轉換流_Java編程IO流中的轉換流

對于IO流中的轉換流,顧名思義,就是將字符流轉換成字節流或者是將字節流轉換成字符流的對象。那么有時候我們得到的是一個字符流,但是我們又需要進行一些計算之類的,或者我們得到的是一個字節流,但是我們又需要進行一些…

pb9 調用系統語音_成都電銷系統一個月多少錢_選擇靈狐傳媒_收費透明

靈狐傳媒表示:成都電銷系統一個月多少錢_選擇靈狐傳媒_收費透明,在成都想要找一家專業的電銷系統,今天小編帶您看看該怎么選擇吧,和研發實踐,融合互聯網、云計算及人工智能、通信、大數據等技術,研發推出了以人工智能為…

java thread 線程銷毀_手把手帶你了解Java線程的實現方式及生命周期原理

前言我們在工作中線程技術很多情況下都能用的到,而且我們在面試的時候,線程技術基本上也是必問的。今天我來從線程的實現方式以及線程的生命周期做一個全面的講解與分析,幫助大家能更好的去了解線程技術。概念我們先來了解下線程和進程的概念…

python自動化_python自動化測試-Behave框架的用法介紹 - python測試學習

測碼學院 Behave框架的用法介紹眾所周知:行為驅動開發((behavior-drivendevelopment,BDD)是一種基于敏捷軟件開發的方法。它可以鼓勵開發人員,業務參與者和QA人員之間的協作。作為另一個Python自動化測試框架,“Behave”允許團隊…

虛擬按鍵自己觸發的java代碼_在SystemUI添加虛擬按鍵

我們想要在volume、back、menu同一排添加一個虛擬按鍵,并且觸發一個應用;1、首先我們要找到這些虛擬按鍵的位置:\frameworks\base\packages\SystemUI\res\layout-sw600dp\navigation_bar.xml2、橫屏時,最左邊的RelativeLayout 中添…

diskgeniusv4.4.0_入門TensorFlow2.0

今天老師帶領我們入門TensorFlow2.0。至于tensorflow2.0是啥嘛,詳細的可以度娘一下。我簡述一下,就是一個end-to-end machine-Learning open source plantform(端對端的開源機器學習的平臺)。學習tensorflow需要引入tensor這個概念,tensor的漢語意思就是…

java.close用法_void close()

void close()描述 (Description)java.io.FilterInputStream.close()方法關閉此輸入流并釋放與該流關聯的所有系統資源。聲明 (Declaration)以下是public void close()方法的聲明 -public void close()參數 (Parameters)NA返回值 (Return Value)該方法不返回任何值。異常 (Excep…

php 其他頁面獲取session_PHP五十個提升執行效率的小技巧,和常見問題

在項目開發過程中,經常遇到了一些PHP處理程序性能底下的情況,程序運行在centosnginx環境,雖然這個有很多的原因如:服務器本身配置,運行環境nginx服務,php-fpm配置等等,更多有一點仍然是PHPer沒有…