
컴퓨터 성능은 시스템이 작업을 얼마나 효율적으로 수행하는지를 측정하는 중요한 개념이다. 성능을 평가하는 여러 지표가 있으며, 여기서는 Response Time(응답 시간)과 Throughput(처리량), CPU Time, CPU clocking, 명령어 수(IC),
컴퓨터의 명령어 집합(Instruction Set)은 컴퓨터가 실행할 수 있는 명령어들의 모음으로, 컴퓨터 마다 서로 다른 명령어 집합을 가지지만 여러 공통적인 특징이 존재한다. 초기 컴퓨터의 명령어 집합은 단순한 명령어로 구성되어 있었으며, 이를 통해 구현이 간단
MIPS는 조건이 참일 때만 특정 라벨로 분기(이동)하고, 그렇지 않으면 그 다음 줄로 계속 실행한다.Compiled MIPS code:조건을 만족하지 않으면 Else로 점프해서 다른 경로 실행, 마지막엔 j Exit으로 빠져나온다.i : $s3, k: $s5, sa
실행 파일(Executable Image)을 만들기 위한 링커(Linker)의 역할1\. Merge segments(세그먼트 병합)여러 개의 오브젝트 파일을 하나로 결합할 때, .text, .data, .bss 같은 세그먼트를 합친다.예: main.o의 .text와
Alt textgcc로 컴파일한 결과 -O1, -O2, -O3 최적화 옵션을 줄수록 명령어 수 감소, 클록 사이클 감소, CPI도 소폭 감소되는 경향을 확인할 수 있다.최적화가 많을수록 코드 성능이 향상됨을 확인할 수 있다.Alt text같은 알고리즘이라도 언어/컴파일
컴퓨터는 다양한 계산을 수행하기 위해 정수(Integer)와 실수(Floating-Point)의 연산을 처리해야 한다. 하지만 하드웨어는 고정된 비트 수로 숫자를 표현하기 때문에, 인간이 생각하는 일반적인 산술과는 다른 제약이 따른다. 정수는 일반적으로 2의 보수(T
컴퓨터에서의 곱셈은 우리가 수학 시간에 배운 긴 곱셈(long multiplication)과 매우 유사한 방식으로 시작된다.각각의 비트를 확인하며 0이면 생략, 1이면 multiplicand를 왼쪽으로 이동한 값을 더함(left shift)최종 결과의 길이 = mul
컴퓨터는 정수뿐만 아니라 실수(real number)도 표현할 수 있어야 한다. 특히 과학 계산, 그래픽스, 신호 처리와 같은 분야에서는 아주 크거나 아주 작은 수를 정확하게 표현하는 것이 중요하다. 이러한 실수 표현은 우리가 수학에서 사용하는 과학적 표기법(scie

MIPS의 기본 구현은 명령어를 실행하기 위해 필요한 회로 요소들-예를 들어 MUX(멀티플렉서)와 제어선(Control lines)-로 구성되어 있다. 이 구현에서는 총 세 개의 주요 MUX가 존재하며, 각각은 명령어의 종류에 따라 서로 다른 경로를 선택하게 도와주는

이전 페이지에서 MIPS 명령어 일부를 지원하는 단순한 데이터 경로(Datapath)를 봤다면, 이번 페이지에서는 Datapath 위에 Control logic(제어 로직)을 추가하여 실제로 명령어를 실행할 수 있는 구조를 구현해본다.MIPS의 ALU(Arithmet

컴퓨터의 성능은 주어진 시간 동안 얼마나 많은 명령어를 실행할 수 있느냐에 따라 결정된다. 이 성능은 주기적으로 동작하는 클럭의 속도에 영향을 받는데, 클럭 주기는 명령어 실행 중 가장 오래 걸리는 경로, 즉 크리티컬 패스(critical path)에 의해 결정된다.

파이프라이닝 구조를 이해하기 위해서는 하나의 명령어가 여러 단계를 거치며 실행된다는 점을 먼저 이해해야 한다. MIPS 구조에서는 명령어 실행 과정을 다섯 단계로 나누며, 이들 각각은 파이프라인의 한 단계가 된다.IF(Instruction Fetch) : 명령어 메모리

파이프라이닝은 성능을 높이기 위한 강력한 기법이지만, 실제 프로그램에는 명령어 간의 데이터 의존성(data dependence)이 빈번히 존재하며, 이는 파이프라인 해저드(hazard)를 유발할 수 있다. 특히 데이터 해저드는 한 명령어의 결과가 아직 계산되지 않았는데

Control Hazard, 또는 Branch Hazard(분기 위험)는 파이프라인 처리 중 분기 명령어(branch instruction)의 실행 여부가 확정되기 전까지, 어떤 명령어를 다음에 가져와야 할지 결정하지 못하는 상황에서 발생하는 문제를 의미한다.파이프라인

현대 프로세서에서의 예외(exception)와 인터럽트(interrupt)는 프로그램 실행 도중 예상치 못한 사건이 발생했을 때, 명령어 실행 흐름을 비정상적으로 변경하는 메커니즘이다. 이들은 단순한 분기(branch)나 점프(jump) 명령어처럼 프로그램 내부에서 정

현대 프로세서 설계에서 명령어 수준 병렬성(ILP, Instruction-Level Parallelism)을 극대화하기 위해 다양한 기술들이 도입되었다. 대표적으로는 동적 스케줄링(dynamic scheduling), 다중 발행(multiple issue), 추측 실행

컴퓨터 프로그램은 실행 중 전체 주소 공간의 일부만 집중적으로 접근하는 경향이 있다. 이와 같은 경향은 지역성(locality)이라 불리며, 두 가지 형태로 나타난다.시간적 지역성(Temporal Locality)은 최근에 접근한 데이터나 명령어에 곧 다시 접근할 가능