cpu가 어떻게 구성되는지를 보여주는 block-diagram으로 assembly code가 있으면 우리가 assembly code를 순차적으로 실행하게 된다.
주소를 가지고 특정 assembly code를 읽어온다. 그리고 그것을 Register file에서 번역해서 번역에 따라서 필요한 register들을 읽는다.
ex) Add r1,r2,r3 : r2와 r3을 읽어서 r1에 더한 결과를 더해라
더할때는 ALU를 통해서 더하고 그 결과를 다시 r1에 저장한다.
그래서 데이터를 읽는 register을 Read Register이라고 부르고 데이터를 쓰는 레지스터를 Write register이라고 부른다.
그림에서 가로친 부분은 들어가 bit를 나타낸다.
데이터를 읽는 레지스터 부분은 위와 같이 구성되게 된다. 우선 n-bit의 레지스터(D flip flop)으로 구성된다. 그리고 MUX(multiplexor)은 N개의 레지스터 중 하나와 연결되게 된다. 그러면 입력되는 레지스터 input이 32bit 였기에 출력 bit도 32bit가 된다.
우리가 데이터를 write할때는 쓰는 값이 제공되어야 한다. 그래서 Register data에서는 32bit의 데이터를 레지스터에 쓰게 된다. 또한 Register number은 우리가 쓰고자 했던 값에 필요했던 5bit를 가지고 decoder를 사용해서 레지스터에 작성하며 동시에 write signal이 1이 들어오게 된다.
주의할 것은 여기에는 clk가 involve된다. 어떤 edge에 우리가 wirte를 dff할 것이기 때문이다.
Memory ─ A collection of storage cells together with the necessary circuits to transfer information to and from them.
이라고 한다. 여기에서 우리에게 중요한 것은 RAM(Random Access Memory) - SRAM,DRAM이다.
RAM : memory Array 안에 어떤 cell을 접근 하든지 접근 시간이 같은 메모리를 이야기 한다.
SRAM(Static RAM)
DRAM(Dynamic RAM)
Typical data elements are:
메모리는 word들이 array 형태로 적층으로 구성 되어져 있다.
내부는 이 내부를 설계하는 사람들이 제작하고 우리는 interface를 알면된다. 그래서 우리는 address를 주면 Output이 나온다는 interface 정보만 알면 System을 디자인하는 데 문제가 없다.
Memory Read and Write를 위해 다음과 같은 성분들이 필요하다.
Data : 요구에 따라 데이터가 작성되고 읽힘
Address : 특정 메모리가 위치한 주소, n bits는 2^n개의 단어 저장가능
An Operations : 메모리에 전달되는 메모리 명령
Read Memory : 메모리 안에 있는 데이터를 읽는 기능
Write Memory : 메모리 안에 데이터를 적는 기능
위의 그래프에서 우리가 확인할 수 있는 점은 다음과 같다.
1. CLK는 실제로 HIGH가 되는 과정이 한번에 이루어 지지 않는다.
2. HIGH일때는 READ를 LOW일때는 WRITE가 가능하다.
3. Address와 Memory enable을 제공한다음에 Data valid를 제공한다. 따라서 Read Operation을 위해서 최소 4번의 주기가 필요하다.