목록컴퓨터구조 (10)
공부하는 스누피
가상메모리 : 보조 메모리를 캐시로 이용하는 것. - 당장 수행할 부분만 메모리에 올려놓는 방식으로, 일부는 물리 메모리에 적재하고 나머지는 디스크 스왑 영역에 적재한다. 이를 요구 페이징 방식이라고 한다. - 다수의 프로그램을 동시에 수행할 때 지역성의 원칙을 적용하여 메모리를 효과적으로 공유한다. - 메인 메모리보다 큰 프로그램을 사용하게 해준다. - 가상 주소를 실제 주소(physical address)로 재배치하는 기능을 제공한다. => 가상 메모리 주소는 가상 페이지 번호와 페이지 offset으로 이루어져 있다. => 가상 페이지 번호는 physical page의 번호로 변환된다. => 페이지 offset은 페이지의 크기를 결정한다. - 이 기능을 주소 바인딩이라고 하며, 바인딩 시점에 따라 3..
수학을 포기한 사람이 수포자라면 나는 컴구포자(?)였다고 할 수 있다. 대학교 2학년때 컴퓨터 구조 수업을 들을 때 내 이해력의 한계를 처음으로 느꼈고, 처음 보는 회로도와 계산문제에 백기를 들었다. 그래서 그때는 이해를 포기하고 무조건 암기만 했었던 걸로 기억한다. 2년 후 컴퓨터 구조 책을 다시 펼쳐 보게 된 계기는 취업 준비 때문이 아니었다. 내가 엔지니어 파트로 갈 게 아니면 회로나 어셈블리는 취업 준비 과정에서 거의 쓸 일이 없겠지만, 전공 과정에서 유일하게 항복(???)했던 분야였기도 했고 이대로 넘어가면 나중에 어떻게든 발목을 잡을 것 같았다. 운영체제, 클라우드 컴퓨팅 등에서 기반 과목이기 때문이었다. 그래서 예전에 수업에서 교재로 쓰였던 '컴퓨터 구조 및 설계'를 선택해 읽기 시작했다. ..
캐시 캐시는 메모리 접근의 지역성을 이용하는 장치이다. 프로세스가 캐시에 없는 워드를 요청하면 fault를 발생시켜서 해당 워드를 캐시로 가져오게 한다. 캐시는 메모리 장치 간의 속도차로 인한 병목 현상을 예방해 주는 장치인데, 예를 들어 CPU와 메인 메모리 간의 속도가 1,000,000배 차이난다면, 두 장치와 속도차가 1000배씩 차이나는 캐시를 중간에 하나 추가해주어 각 메모리 간의 속도차를 1000배씩 줄여준다. (예시) CPU (1,000,000) --- Main Memory (1) => CPU는 1초에 1,000,000개의 데이터 교환이 가능한데 Main Memory는 1개만 가능하다. => 그렇게 되면 CPU에서 메인 메모리에 1,000,000개의 데이터를 보내는 데 1,000,000초가 ..
파이프라이닝(pipelining)은 여러 명령어가 중첩되어 실행되는 구현 기술이다. 세탁소로 파이프라이닝의 예를 들 수 있는데, 세탁소에서 하는 일의 순서는 다음과 같다. 1. 세탁기에 옷을 넣는다. 2. 세탁기를 다 돌리면 건조기에 옷을 넣는다. 3. 건조기를 다 돌리면 건조된 옷을 갠다. 4. 선반에 옷을 놓아달라고 동료에게 부탁한다. 여기서 파이프라이닝이 되지 않았을 경우, 여러 번의 작업을 수행하면 다음과 같은 순서로 진행된다. - 파이프라이닝 되지 않은 방법 작업 큐: A, B, C 1) A1 (A의 옷에 대해 1번 작업을 수행하는 것을 의미) 2) A2 3) A3 4) A4 5) B1 ... 8) B4 9) C1 ... 12) C4 이 방법에서는 위와 같이 한 작업이 모든 일을 끝낼 때까지 다..
+ 이 글은 컴퓨터구조를 이해하기 위해 작성된 논리회로 요약 정리이다. 디지털 전자 신호는 강한 전류와 약한 전류의 두 가지 방법으로만 작동한다. 컴퓨터는 이 신호를 논리적으로 참(True, 1, asserted)과 거짓(False, 0, deasserted)라고 인식한다. 논리 블록들은 메모리를 가지고 있는지에 따라 구분한다. 메모리가 없는 블록은 combinational logic block(CLB)이라고 하고, 출력값이 입력값에 대해서만 의존할 수 있다. 메모리를 가지는 블록은 출력값이 이 입력값과 블록의 메모리에 대해 의존할 수 있다. 이렇게 블록에 저장되는 메모리를 논리 블록의 상태(state)라고 한다. 진리표 (Truth Tables) CLB는 메모리를 가지고 있지 않아서 입력값에 대한 출력..
과학적 표기법(scientific notation) 소수점의 왼쪽에 한 자릿수만을 갖도록 한 표기법 정규화된 수(normalized number) 과학적 표기법으로 표현된 숫자 중에서 맨 앞에 0이 나오지 않도록 한 수 부동소수점 이진수를 정규화된 형태로 표현하기 위해서는 기수(base)가 필요한데, 이를 이진 소수점(binary point)이라고 한다. 이런 수를 지원하는 컴퓨터 연산이 부동소수점(floating point) 연산이다. 부동(floating)은 소수점이 고정되어 있지 않다는 의미다. C언어에서는 이러한 수를 나타내기 위해 float라는 변수명을 사용한다. 이진 소수점으로 나타낸 실수는 다음과 같다. 1.xxxxxxx * 2^yyyy 컴퓨터에서는 y에 해당하는 지수도 이진법을 사용하여 나..
1. 컴파일러 - C 프로그램을 어셈블리 언어 프로그램으로 바꾼다. - 예전에는 어셈블리 언어로 프로그램을 작성하였으나 메모리 성능이 좋아지면서 컴파일러가 어셈블리 언어 프로그램을 직접 생성한다. 2. 어셈블러 - 어셈블리 언어 프로그램을 기계어로 번역한다. - 어셈블러가 독자적인 명령어를 제공해 번역과 프로그래밍을 간편하게 해줄 수 있는데, 이런 명령어를 의사명령어(pseudoinstruction)라 한다. ex) ANDI 명령어는 ADD에 I를 붙임으로써 기존 명령어와 형식도 다르고 opcode도 다르다는 것을 상기시킨다. (두 명령어는 수치 피연산자를 사용한다는 점에 있어서 다르다) - 각 명령어를 이진수로 바꾸기 위해서는 레이블(명령어)에 해당하는 주소를 모두 알아야 한다. - 사용되는 심벌과 주..
양수와 음수를 구별하는 표현방법 중 부호와 크기(sign and magnitude) 표현법은 가장 단순한 방법으로 숫자 앞에 별도의 부호(+, -)를 붙이는 방법이다. 하지만 컴퓨터에서 이렇게 수를 나타내면 0에도 부호가 붙어 양의 0과 음의 0을 갖게 되어 쓰이지 않는다. 그래서 이진 비트에서 0들이 앞에 나오면 양수이고 1들이 앞에 나오면 음수가 되도록 표현하는 방식을 사용하게 되었고, 이를 2의 보수(two's complement) 표현법이라고 부른다. 2의 보수란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 주어진 이진수의 모든 자리의 숫자를 반전시킨 뒤, 1을 더하면 2의 보수를 얻을 수 있다. 컴퓨터는 음수를 2의 보수를 취해 표현한다. 0 = 0000 0000 .... 0000 ..