본문 바로가기

Digital Design/컴퓨터구조8

[컴퓨터구조] 파이프라이닝 (Pipelining) 안녕하세요! 컴퓨터구조 관련 글로 오랜만에 돌아왔습니다. 이전에 CPU 동작 원리에 대해 학습한 것 기억나시나요? CPU 동작 원리: https://metastable.tistory.com/28 오늘은 응용버전인 파이프라이닝 (Pipelining)에 대해 배워보도록 하겠습니다. Intro 먼저 파이프라이닝을 왜 해야 할까요? 그림으로 알아보겠습니다. 빨래방에서 빨래를 한다고 생각해볼까요? 우리는 세탁기를 30분 돌리고, 건조기를 40분 돌리고, 정리를 20분 해야 합니다. 이걸 한 사이클에 한다고 가정하면 위의 그림처럼 비효율적일 것입니다. A가 세탁/건조/정리를 다 할때까지 B는 계속 기다려야 하죠.. 그런데 A가 건조기를 사용할 동안 세탁기는 비어있죠? 그럼 B가 세탁기를 사용하면 안될까요? 여기서 .. 2023. 4. 10.
[컴퓨터구조] ASIC Design Flow 지금까지 회로에 대한 설명과 RTL 설계, 공정까지 다양한 주제를 다뤘었는데요, 제가 중요한걸 하나 빼먹었더라구요.. 바로 ASIC Design Flow입니다. 반도체 칩은 도대체 어떤 과정으로 만들어지는 것일까요?? 하나의 칩을 만들려면 정말 다양한 분야의 지식과 툴, 여러 인력과 많은 돈이 필요합니다. 반도체 칩 같은 경우는 한 번 만들어지면 수정이 불가능하다고 봐도 됩니다. 예를 들어 휴대폰에 오류가 생겨서 AS센터에 가면, 기사님이 칩을 뜯어서 MOSFET이나 metal line 같은걸 고쳐주진 않잖아요? 따라서 반도체 칩은 무조건 "완벽하게" 만들어야 합니다. 그래서 그런지 여러 과정을 거치면서 다양한 검증을 하게 됩니다. 오늘은 그 Flow를 간단하게 살펴보는 시간을 갖도록 하겠습니다. ASI.. 2023. 3. 16.
[컴퓨터구조] 16bit CPU 설계 (Design with Verilog) 이전 글에서 CPU의 구조와 작동원리에 대해 알아보았습니다. 이전글: https://metastable.tistory.com/28 이번에는 이론을 바탕으로 CPU를 Verilog로 설계하였는데요, 처음부터 깊게 들어가면 너무 어렵기 때문에 간단한 16 bit CPU를 설계하도록 하겠습니다. 시작 전에 말씀드리자면 2년 전 베릴로그가 익숙하지 않을 때 작성하여서 오류랑 잘못된 코딩스타일이 많을 수 있습니다.. (ex. reset, latch 생기는 코딩 등) 추후 시간이 나면 한 번 정리해서 올리도록 하겠습니다. 참고로 여기서 사용한 메모리는 앞에서 설계한 sram을 instance하여 이용하였습니다. RISC-V Instruction set이나 GitHub에 있는 코드를 한 번 읽어보는 것도 좋을 것 같.. 2023. 1. 12.
[컴퓨터구조] CPU 작동 원리 오늘부터는 CPU에 대해 알아보겠습니다. 먼저 CPU란 무엇일까요? CPU (Central Processing Unit): 중앙 처리 장치 CPU는 기억, 해석, 연산, 제어라는 매우 중요한 역할들을 도맡는, 컴퓨터의 대뇌라고 할 정도로 매우 중요한 부분입니다. 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하고 그렇게 돌아가도록 제어해주는 기능을 내장한 칩이죠. CPU는 4단계의 Cycle로 명령어를 처리합니다. 1. Fetch: 명령어 인출 - CPU에서 명령어를 읽어옴 2. Decode: 명령어 해독 - 읽어온 명령어를 해독 3. Execute: 명령어 실행 - 해독한 명령어를 실행 4. Store: 결과 저장 - 계산 결과를 저장 각각의 사이클에서 어떤 일이 벌어지는 지 알아보기 전에 레지스터.. 2023. 1. 9.
[메모리] SRAM에 데이터 쓰고 읽기 (Design with Verilog) 이전 글에서 SRAM을 Full Custom Design 했었습니다. 이제 메모리가 만들어졌다고 가정하고, 데이터를 읽고 쓰는 과정을 진행해보겠습니다. Verilog Code DUT `timescale 1ns / 1ps module sync_sram(addr, din, dout, clk, we); parameter addr_width = 8, word_depth = 256, word_width = 8; input clk, we; input [addr_width-1:0] addr; input [word_width-1:0] din; output reg [word_width-1:0] dout; reg [word_width-1:0] mem [0:word_depth-1]; always @ (posedge clk).. 2023. 1. 8.
[메모리] SRAM Full Custom Design (Layout) 이번에는 이전 글에서 만든 SRAM schematic의 Layout을 디자인할 예정입니다. Tool은 학교에서 많이 사용하는 MyCAD를 이용하였습니다. 먼저 SRAM Cell의 Layout입니다. Metal은 최소한으로 사용하기 위해 2층만 사용하였습니다. 다음은 Sense Amplifier의 Layout입니다. 이제 SRAM Cell과 Sense Amplifier를 합칠 차례입니다. 배포된 가이드 라인을 읽어보면 Design Rule이 있습니다. Metal 사이에 이격시켜야 할 거리 등이 작성되어 있으므로 꼼꼼히 읽고 설계하는 것이 중요합니다. 이렇게 설계가 끝나면 Schematic과 Layout을 시뮬레이션 해봐야 합니다. 또한 두 가지를 비교해서 잘 설계되었는지도 확인해봐야 합니다. 검증에는 DR.. 2023. 1. 8.
[메모리] SRAM Full Custom Design (Schematic) 이번 글부터 SRAM을 설계한 것을 작성할 예정입니다. SRAM은 Full custom design으로 진행하였습니다. Schematic 파트 먼저 시작하겠습니다. 먼저 6T SRAM Cell을 설계하였습니다. 6T SRAM은 4개의 NMOS와 2개의 PMOS로 구성되어 있습니다. SRAM의 Word line을 선택하기 위해 Decoder도 달아주었습니다. 마지막으로 BL과 BLB의 미세한 전압차이를 증폭시키기 위해 Sense Amplifier를 달아주었습니다. SRAM Cell 16개를 이어 붙이면 다음과 같은 Schematic이 나옵니다. BL과 BLB를 타고 내려오면 Sense Amplifier에 의해 전압차이가 증폭되어 0을 썼는지 1을 썼는지 알 수 있게 됩니다. 2023. 1. 8.
[메모리] Memory 종류 안녕하세요. 컴퓨터구조를 학습하기 전에 메모리에 대해 간단히 짚고 넘어가면 좋을 것 같습니다. 모두가 알고 있듯 우리나라는 메모리 반도체 강국입니다. 명실상부 세계 1위죠. 삼성전자는 30년이 넘는 시간 동안 메모리 반도체 분야에서 연속으로 1위를 달성하고 있습니다. 그래서 오늘은 메모리에 대해 알아보고자 합니다. Memory 종류 메모리는 크게 RAM과 ROM으로 나눌 수 있습니다. RAM (Random Access Memory) : 휘발성 메모리 ROM (Read Only Memory) : 비휘발성 메모리 먼저 ROM은 비휘발성 메모리입니다. 주로 컴퓨터를 부팅할 때 SW에 의해 동작하는게 아니라, ROM에 저장된 정보를 이용해 HW적으로 동작시킵니다. ROM은 한 번 쓰면 지울 수 없고 읽을 수만 .. 2023. 1. 8.