컴퓨터 구조 9

C코드에서부터 어셈블리 프로그램 연산까지

- 프로세서는 소량의 데이터만을 레지스터에 저장이 가능하지만, 컴퓨터 메모리는 수십억개의 데이터를 저장할 수 있다. 배열이나 구조체 같은 자료구조가 이러한 메모리에 저장되어있다. - MIPS의 산술 연산은 레지스터에서만 이루어지기 때문에, 메모리에 저장되어 있는 데이터와 레지스터 간의 데이터를 주고 받는 명령어가 있어야 한다. MIPS에서의 이러한 메모리 참조 명령어는 적재 명령어인 load와 저장 명령어인 store가 있다. 명령어 종류 1. load (lw) 메모리에서 레지스터로 데이터를 복사해 오는 데이터 전송 명령 - 연산자 이름 (lw) - 메모리에서 읽어 온 값을 저장할 레지스터 ($t0) - 메모리 접근에 사용할 상수(8)와 레지스터($s3) lw $t0, 32($s3) 해당 명령어는 쉽게 ..

컴퓨터 구조 2023.03.09

[컴퓨터 구조] 단일 사이클 구현 (2)

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. *이 절에서 설명한 단일 사이클 패스는 명령어 메모리와 데이터 메모리를 따로따로 가져야 한다. 1. MIPS에서는 데이터와 명령어의 형식이 달라서 다른 메모리가 필요하기 때문 2. 메모리를 별도로 갖는 것이 저렴하기 때문 (듀얼 포트와 비교했을 때) 3. 프로세서가 명령어를 한 사이클에 실행하는데, 단일 포트의 메모리로는 한 사이클에 2개의 서로 다른 접근을 할 수 없기 때문 [단순 구현 데이터 패스] [ALU 연산] : ALU는 명령어 종류에 따라 첫 다섯 가지 기증 중 하나를 수행하게 된다. -Load/ Store 명령어인 경우에는 메모리 주소를 계산하기 위한 add 연산을 하는 데 ALU를 사용한다. - Branch..

컴퓨터 구조 2022.08.31

[컴퓨터 구조] 단일 사이클 구현(1)

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. [전제] - 상향 클럭 에지를 사용한다. (Rising Edge 사용) - 한 사이클 내에는 피드백이 일어나지 않는다. - 데이터는 32비트의 폭을 갖는다. : 32 비트 MIPS가 취급하는 거의 모든 데이터가 32비트의 복을 갖기 때문에, 이 프로그램의 상태 소자와 논리 소자의 입력과 출력 폭은 거의 다 32비트이다. -레지스터는 듀얼 포트(dual port) 설계이다. : 메인 메모리와 다르게 레지스터에서는 필수조건이다. 예를 들어, add $r1, $r2, $r1이라는 명령어가 있을 때, r1과 r2값을 "읽는" 작업과 두 값의 합을 다시 r1에 "쓰는" 작업이 동시에 이루어져야 하기 때문이다. -그림에서 버스(bu..

컴퓨터 구조 2022.08.30

[컴퓨터 구조] 프로세서

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. [샘플 MIPS 프로세서 구조] [명령어] - 메모리 참조 명령어 -lW(load doubleword), sw(store doubleword) -산술/ 논리 명령어 -add, sub, or, slt -조건부 분기 명령어 -beq(branch equal), j(jump) [요소] -PC(Program Counter) : 메모리상의 현재 프로그램의 실행 위치(명령어 위치) -Mux(Multiplex: 다중화기, data selector) : 제어선의 값에 따라 여러 개의 입력 중에서 하나를 선택하는 소자 -Demux(De-multiplex: 역 다중화기) : 하나의 통신 회선으로 데이터를 전송 받은 것을 여러 개의 회선으로 ..

컴퓨터 구조 2022.08.28

[컴퓨터 구조] 컴퓨터 연산

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. [2진수 연산] *ALU(Arithmetic Logic Unit) 산술 논리 장치는 덧셈, 뺄셈 같은 두 숫자의 산술연산과 배타적 논리합, 논리곱, 논리합과 같은 논리연산을 계산하는 디지털 회로이다. -자리수 올림(carry), 자리수 내림(borrow) -최대 숫자보다 넘어감 (Overflow) , 최소 숫자보다 작게 넘어감(underflow) -MIPS는 오버플로를 탐지하면 예외(인터럽트)를 발생시킨다. -오버플로가 발생한 명령어의 주소는 레지스터에 저장되고, 컴퓨터는 적절한 처리를 하기 위해서 해당 루틴으로 점프한다. 인터럽트가 걸린 주소를 저장해서 해당 처리를 한 다음에 프로그램 실행을 계속할 수 있게 한다. [2..

컴퓨터 구조 2022.08.26

[컴퓨터 구조] 명령어 종류, 기능과 형식

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. [어셈블리 명령어] - 기계어와 일대일로 대응이 되는 컴퓨터 프로그래밍의 low-level 언어이다. -Assembler : 어셈블리 언어를 기계어로 변환해주는 기능을 하는 장치. - 아키텍쳐의 차이에 따라 어셈블리 명령어가 다르다. -CISC 아키텍쳐 (Intel x86/ x86-64) vs RISC 아키텍쳐 -MIPS/ARM/RISC-V 앞으로의 내용에는 MIPS기준으로 쓰일 예정이다. -명령어의 표현 방식을 이해를 하면 컴퓨터의 내장 프로그램 개념(stored-program concept)을 이해할 수 있다. -내장 프로그램 개념: 여러 종류의 데이터와 명령어를 메모리에 숫자로 저장할 수 있다는 개념 (ex 앞에서 ..

컴퓨터 구조 2022.08.24

[컴퓨터 구조] 성능 평가

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. - 성능이란? - 컴퓨터 성능의 기준 1. 응답시간 (Execution time) -실행 시간이라고도 한다. 컴퓨터가 태스크(task)를 완료하기까지의 총 소요시간이다. 디스크 접근, 메모리 접근, 입출력 작업, 운영체제 오버헤드 및 CPU 시간을 다 포함한다. 2. 처리량 (Throughput, Bandwidth) - 대역폭이라고도 한다. 단위 시간당 완료하는 태스크(task)의 수. - 클럭 사이클 - 거의 모든 컴퓨터는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하여 만들어지는데, 이 클럭의 시간 가격을 "클럭 사이클(Clock cycle)"이라한다. - 1Ghz의 프로세서의 경우 10억분의 1초. - 빛..

컴퓨터 구조 2022.08.23

[컴퓨터구조] 컴퓨터 추상화

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. - 추상화란? - 하드웨어와 소프트웨어의 생산성을 높이기 위한 핵심 기술 중 여러 수준에서 설계를 명시하는 것으로, 하위 수준에서 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화 시키는 방법이다. -ISA(Instruction Set Architecture) -하드웨어와 최하위 계층 소프트에어 사이의 인터페이스 -마이크로프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어 명령어 -마이크로프로세서마다 기계어 코드의 길이와 숫자 코드가 다르다. -기계어/어셈블리 프로그램을 작성하기 위해서 알아야하는 모든 정보를 말한다. -레지스터, 메모리 접근, 입출력 등 -프로그래머가 저수준 세부사항까지 걱정할 필요는 없..

컴퓨터 구조 2022.08.23

[컴퓨터 구조] 컴퓨터 구조 기초

숭실대학교 하석재 교수님의 2022-1학기 컴퓨터 구조 강의를 정리 및 재구성했다. -대표적 컴퓨터 구조 노이만 아키텍쳐 - 메모리에 적재된 프로그램이 명령어 / 데이터가 혼재되는 형태 -반드시 시작주소 부터 프로그램이 실행되어야 한다. -명령어와 데이터가 위치에 따라 의미가 달라짐 하버드 아키텍쳐 - 프로그램 메모리와 데이터 메모리가 분리되어 저장됨 - 메모리 주소에 따라 같은 데이터가 의미가 달라지지 않는다. - 성능면에서 장점을 가지지만 비교적 구조가 복잡 현재의 컴퓨터 구조 - 메모리는 노이만 구조, 캐시는 하버드 구조를 채택함 -캐시는 명령어 캐시 + 데이터 캐시로 분리해서 관리 -컴퓨터 언어 저수준 언어 - Mnemonic(기계어) -0101 1010 001 - Assembly (어셈블리) -..

컴퓨터 구조 2022.08.21