5. CPU 성능 향상 기법나의 학부생 시절에는 컴퓨터 부품을 직접 사서 조립하는 것이 유행이었다.사실 완제품 말고는 그것밖에 방법이 없었다.조립 서비스 같은 것이 없었기 때문이다.특히 서멀 그리스 바르는 것이 정말 쉽지 않았던 기억이 난다.그 와중에 CPU를 더 빠르게 하겠다고BIOS 들어가서 오버클럭 활성화시키고그랬다가 컴퓨터 안 켜지기도 했던 기억도 난다.뭐 대단한 걸 하겠다고 그 난리를 쳤을까 싶다.CPU는 이미 빠르다.작업 수행의 최소 단위가 나노초 단위이다.하지만 인간의 욕심은 끝이 없다.더 잘 굴리고 싶다!이번 장의 주제는 멀티코어, 멀티스레드이다.5.1 빠른 CPU를 위한 설계 기법클럭을 높인다고 장땡이 아니다.발열 때문이다.더 좋은 방법이 있으면 좋겠다.한 가지 방법은 뇌를 여러 개 만드..
4. CPU의 작동 원리CPU의 작동 원리에 대해서는 이미 1장에서 살펴보았지만,이번 4장에서 보다 자세히 알아본다.좀 어렵다.안전띠 꽉 매라고, 친구들.4.1 ALU와 제어장치4.1.1 ALUALU는 이렇게 생겼다.출처: https://huimang2.github.io/etc/computer-architecture인터넷에서 ALU를 찾아보면 많은 그림들이 나오는데,이 그림이 책의 그림과 가장 비슷해보인다.레지스터로부터 피연산자(오퍼랜드)를,제어장치로부터 제어신호를 받아서,무언가 연산한 후에,상태 플래그를 상태 레지스터로,연산 결과를 누산기로 보낸다.상태 플래그는 아래의 정보들을 담고 있다.부호 플래그: 연산 결과가 양수인지 음수인지?제로 플래그: 연산 결과가 0인지 아닌지?캐리 플래그: 연산 중 올림수..
3. 명령어컴퓨터가 다루는 정보는 데이터와 명령어로 구성된다.이번 장은 명령어다.데이터만 있어서는 아무것도 할 수 없다.100과 200만 주면, 이걸 더해야 할지 곱해야 할지 알 수 없다.무언가 시켜야 한다. 이것을 우리는 명령어라고 부른다.3.1 소스 코드와 명령어CPU가 일을 하기 위해서는 모든 것이 0과 1로 변환되어야 한다.데이터는 물론 명령어도 마찬가지이다.분명 파이썬 코드는 영어로 쓰여 있다.그렇다면 파이썬 코드도 어떤 과정을 거쳐 2진수로 변환될 것이다.그런데 뭔가 좀 묘하다.데이터든 명령어든 2진수로 변환되는데CPU는 이것이 데이터인지 명령어인지 어떻게 알까?그것을 알기 위해 명령어의 번역 과정에 대해 알아보자.3.1.1 저급 언어와 고급 언어두 줄 요약저급 언어: 기계어, 어셈블리어고급 ..
2. 데이터컴퓨터는 하드웨어이고, 전기와 소프트웨어로 돌아간다.소프트웨어는 정보이다.정보는 명령어와 데이터로 구성된다.명령어는 "이거 해"라는 문장이고,데이터는 "이거"에 해당하는 재료이다.이번 챕터는 데이터에 대해 다룬다.챕터 제목이 참 짧다.작가 김훈의 간결한 문장이 떠오른다.나 역시 만연체를 쓰지 않도록 항상 조심하고 있다.2.1 0과 1로 숫자를 표현하는 방법"컴퓨터에서 모든 것은 0과 1로 표현된다."분명이 누구나 한번쯤 들어봤을 법한 말이다.그런데 이상하다.지금 내가 쓰고 있는, 여러분이 읽고 있는 이 글씨는 0과 1이 아닌데?파이썬 코드는 영어인데?모든 것이 0과 1이라는게 무슨 말일까?0과 1이 2진수binary임은 어려운 내용이 아니다.책에도 전구로 잘 설명되어 있다.하지만 진짜 궁금한 ..
0. 욕망대학교 1학년 때 한 친구가 있었다.BiDuRi라는 아이디를 쓰던 그 친구는 컴퓨터를 잘 다뤘다.Quake 3를 좋아했고, 나에게 Need For Speed라는 게임도 알려줬다.나는 ip address라는 게 있는 줄도 모르던 시절이었다.어느 날인가, 컴퓨터에 대해 얘기를 하고 있었다.그 친구가 이런 표현을 했다."램(RAM)은 말하자면 책상 같은 거야."컴퓨터가 어떻게 동작하는지 1도 알지 못하던 나였으나그 한 문장으로 인해 갑자기 모든 것이 다르게 느껴졌다.컴퓨터 내부를 감싸고 있던 안개가 살짝 걷히는 기분이었다.그리고 생각했다. "더 알고 싶다!"컴퓨터 구조라는 과목이 전산과에 있다는 것을 알게 되었다.하지만 내 전공만으로도 벅찼다.결국 미루고 미루다 정식으로 배울 기회는 갖지 못했다.그래..