목록CSE/컴퓨터구조 (7)
minkylee
Floating Point 부동 소수점 또한 이진수로 표현이 된다. 그 전에 10진수에 대해 먼저 알아보자 일반적으로 100은 $ 10^2 $ 이라고 본다. 하지만 scientific notation에서는 이를 $ 1 * 10^2 $ 으로 표현한다. 또한 223을 $ 2.23 * 10^2 $ 라고 표현한다. 이렇게 제일 앞글자만 남기고 뒤를 지수로 표현하는 방법이 scientific notation이라고 하고 이를 normalized 되었다고 한다. 이진수도 마찬가지인데 이진수 또한 $ \pm 1. xxxxx_{(2)} * 2^{yyyy} $ 으로 표현한다. 수의 맨 앞은 1로 놔두고, 뒤의 x는 fraction, y는 exponent라고 한다. 이처럼 point가 not fixed이기 때문에 이를 부동..
컴퓨터 산술 컴퓨터의 출발은 4칙연산 계산기이며 지금도 근본적인 기능은 수치의 산술연산 및 논리연산이다. 산술연산은 정수와 이외의 실수 (부동소수점으로 표현)에 대한 계산이고 논리연산은 2진수로 표현되는 데이터에 대해서 (AND, OR, NOT) 등 이루어진다. 산술 및 논리연산은 ALU에서 수행하며 ALU란 CPU를 구성하는 모듈들 중 하나로 수치 및 논리 데이터에 대한 연산을 수행하는 하드웨어이다. 1. Addition and Subtraction bit에서의 덧셈은 십진수의 덧셈과 매우 흡사하다. 단지 컴퓨터에서는 표현할 수 있는 범위가 제한적이므로, 특정한 경우 오버플로우가 발생하게 된다. 덧셈에서의 overflow는 같은 sign일 때 발생한다. 두 양수를 더했을 때 음수가 나오면 overflo..
큰 수치 피연산자 프로그램에서 사용하는 상수는 대체로 크기가 작으므로, 대부분의 경우 12비트 내로 표현이 가능하다. 그러나 그렇지 않은 경우도 있으므로 더 큰 상수를 다룰 수 있어야 한다. 이를 위해 RISC-V는 레지스터의 비트 12번째자리부터 31번째 자리가지에 20비트 상수값을 넣는 lui(load upper immediate) 명령어를 제공한다. lui는 opcode 7bit, rd 5bit을 제외하고 남은 20bit를 immediate를 위해 사용한다. 또한 이 명령어는 imme에 해당하는 20bit를 상위 20bit에 위치시킨다. 즉, rd의 31번째부터 12번째까지 위치시킨다. 최종적으로 남은 12bit는 0으로 채운다. 해당 명령어를 통해 명령어 2개로 32비트 상수를 만들 수 있다. 6..
명령어의 타입을 알아보기 전 숫자표기법을 먼저 알아보자! 숫자 표기법 Unsigned Binary Integers 범위 : 0 부터 2^n-1 Signed Binary Integers 반을 쪼개서 음수, 양수로 사용한다. 음수가 하나 더 많음 -> 0 때문에 63번 비트는 부호비트이다. 1은 음수 0은 양수 특정한 숫자들 0 : 0000 0000 … 0000 -1 : 1111 1111 … 1111 Most-negative : 1000 0000 …. 0000 Most-positive : 0111 1111 … 1111 보수를 취한 다음 1을 더해서 Negative를 만들어준다. Sign Extension (부호 확장) 더 많은 비트를 사용해서 숫자의 값은 유지하면서 표현하는 방법이다. Sign bit을 가지..
instruction 컴퓨터의 하드웨어에게 일을 시키기 위해서는, 하드웨어가 알아들을 수 있는 언어를 해야한다. 컴퓨터 언어에서의 단어를 명령어(instruction) 이라고 한다. instruction은 Opcode, Operand 로 이루어져 있다. Opcode : what the instruction dose, 하드웨어가 어떤 작업을 할지에 대한 명령어 Operands : the object of an operation, 하드웨어가 어떤 대상에 대해 작업을 할 지에 대한 명령어 예를 들어 add $2 $4 $2 가 있을 때, add가 opcode가 되고, $2, $4, $2가 operands가 된다. 만약 add = 000000001111111, $2, $4, $2 = 0101000101100000..
어떤 컴퓨터가 다른 컴퓨터보다 성능이 좋다는 것은 과연 무엇을 뜻하는 것일까? 두 데스크탑 컴퓨터에서 같은 프로그램을 실행시키는 경우에는 먼저 끝나는 쪽이 더 빠른 컴퓨터라고 할 수 있다. (응답시간) 그러나 여러 대의 서버를 가지고 여러 사용자의 작업을 처리하는 데이터센터를 운영할 때에는 하루동안 더 많은 작업을 처리하는 컴퓨터가 더 빠른 컴퓨터일 것이다. (처리량) 응답시간 : 컴퓨터가 테스크를 완료하기까지의 총 소요 시간, 디스크 접근, 메모리 접근, 입출력 작업, 운영체제 오버헤드 및 CPU 시간을 다 포함한다. 처리량 : 단위 시간당 완료하는 테스크의 수를 나타내는 또 다른 성능 척도 성능을 최대화하기 위해서는 어떤 테스트의 응답시간 또는 실행시간을 최소화 해야한다. 어떤 컴퓨터 X의 성능과 실..
컴퓨터 구조 분야의 일곱 가지 위대한 아이디어 지난 60년의 컴퓨터 역사 가운데 컴퓨터 구조 분야에서 발명된 7개의 위대한 아이디어. 설계를 단순화하는 추상화 컴퓨터 설계자와 프로그래머는 자원의 수가 급격히 증가함에 따라 설계 시간이 길어지는 것을 방지하기 위해서 생산성을 높이기 위한 기술을 개발해야 했다. 하드웨어와 소프트웨어 생산성을 높이는 핵심 기술 중 하나는 여러 수준에서 설계를 명시하는 추상화 를 사용하는 것이다. 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화한다. 자주 생기는 일을 빠르게 자주 생기는 일을 빠르게 만드는 것이 드물게 생기는 일을 최적화 하는 것보다 성능 개선에 도움이 된다. 자주 생기는 일은 드물게 생기는 일보다 단순하여 성능을 개선하기 쉬운 경우가 많..