전체 글 49

13. RAM의 특성과 종류

RAM의 특성과 종류 컴퓨터의 네 가지 핵심 부품: CPU, 메모리, 보조 기억 장치, 입출력 장치 RAM 메인 메모리의 종류에는 크게 RAM과 ROM 두 가지가 있다. 하지만 메모리라고 하는 용어는 메인 메모리 중에서도 램을 지칭하는 경우가 많다. CPU는 RAM 즉 메모리로부터 명령어와 데이터들을 가져와 실행하고. RAM은 실행할 대상을 저장한다. 하지만 RAM은 저장한 내용을 전원이 꺼지면 잃어버린다는 단점이 있다. 따라서 보조 기억 장치라고 하는 전원이 꺼져도 저장된 내용을 기억할 수 있는 대용량 저장장치가 필요하다. RAM 즉 전원이 꺼지면 저장된 내용을 잃어버리는 이러한 특성을 갖고 있는 저장장치를 휘발성 저장장치라고 부르고. 반대로 전원이 꺼져도 저장된 내용을 잃지 않는 특성을 갖고 있는 저..

12. 명령어 집합 구조, CISC와 RISC

명령어 집합 구조, CISC와 RISC 명령어 병렬처리 기법(명령어 파이프라이닝)은 현대 CPU가 꼭 사용해야 되는 아주 중요한 핵심 기술이라고도 볼 수 있다. 그런데 명령어 파이프라이닝을 하기 유리하게 생긴 명령어가 있고 명령어 파이프라이닝에 불리하게 생긴 명령어가 있다. 그렇다면 명령어가 어떻게 생겨야지 명령어 파이프라이닝에 유리할까? 여기에 대해서 알아보기 위한 명령어 집합 구조. 명령어 집합 CPU마다 이해하는 명령어의 종류가 다른 경우가 있다. CPU 제조사별로도 만드는 CPU가 다르고 같은 제조사에서 만든 CPU라고 할지라도 명령어의 세세한 생김새나 연산 방식, 주소 지정 방식은 CPU마다 다른 경우가 있다. 명령어 집합 구조: CPU가 이해할 수 있는 명령어들의 모음. 인텔의 CPU가 이해할..

11. 명령어 병렬 처리 기법

명령어 병렬 처리 기법 명령어 병렬 처리 기법 멀티코어와 멀티스레드 CPU 처럼 CPU를 조금 더 빠르게 처리할 수 있도록 설계를 하는 것도 중요하지만 어떻게 CPU가 시간 낭비없이 시간을 쓰며 메모리에 있는 명령어들을 빠르게 실행할 수 있는지도 중요하다. 이와 관련해서 공부할 것이 명령어 병렬 처리 기법. 명령어 파이프라인 명령어가 CPU에서 처리되는 과정을 비슷한 시간 간격으로 나누면 다음과 같이 나눌 수 있다. 명령어 인출(Instruction Fetch) 명령어 해석(Instrunction Decode) 명령어 실행(Execute Instruction) 결과 저장(Write Back) 같은 단계가 겹치지만 않으면 CPU는 각각의 단계를 동시에 실행을 할 수 있다. t2이라는 시간 동안에는 하나의 ..

10. 빠른 CPU를 위한 설계 기법

빠른 CPU를 위한 설계 기법 클럭 코어 & 멀티 코어 스레드 & 멀티 스레드 CPU의 속도를 빠르게 하기 컴퓨터 부품들은 클럭 신호에 맞춰서 일사분란하게 움직인다. CPU는 명령어 사이클이라는 정해진 흐름에 맞춰서 명령어들을 실행한다. 클럭 속도 클럭 신호 자체를 빠르게 반복하면 속도가 빨라지겠네? 꼭 그런 것은 아니지만 일반적으로는 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰서 움직인다. 클럭 속도는 CPU에 속도 단위로 간주되기도 한다. 헤르츠: 클럭 속도는 헤르츠라는 단위로 측정하는데 헤르츠는 1초에 클럭이 반복되는 횟수를 의미한다. 클럭이 ‘똑딱’ 하고 1초에 한 번 반복되면 1 헤르츠, 클럭이 1초에 100번 ‘똑딱’ 하면 100 헤르츠. 그렇다면 클럭..

9. 명령어 사이클과 인터럽트

명령어 사이클과 인터럽트 컴퓨터의 내부 동작 원리를 이해함에 있어서 명령어 사이클과 인터럽트는 아주 중요한 개념이다. 명령어 사이클과 인터럽트 명령어 사이클: CPU는 메모리로부터 명령어나 데이터들을 갖고 와서 실행하고, 필요하다면 값을 저장할 수도 있다고 했는데 이 과정에서 CPU가 메모리에 저장되어 있는 프로그램을 실행하는 데 일정한 패턴이 있다. 일정한 주기가 있다. 다시 말해서 일정한 어떤 정해진 흐름이 있다. CPU는 메모리 안에 있는 프로그램을 어떤 정해진 흐름대로 처리하게 되는데 그 정해진 흐름 주기를 명령어 사이클이라고 한다. 인터럽트: CPU는 메모리에 있는 프로그램을 정해진 흐름대로 처리를 하는데 간혹 정해진 흐름을 방해하는 신호가 CPU한테 올 수 있다. 그렇게 정해진 흐름을 끊는 신..

8. CPU의 내부 구성 - 레지스터

레지스터 레지스터 CPU 내부에 있는 작은 임시 저장 장치 개발하고 실행하는 프로그램 속의 명령어와 데이터는 실행 전후로 그 관련된 값들이 레지스터 저장된다. 반드시 알아야 할 레지스터 레지스터의 종류는 CPU마다 다르다. CPU마다 레지스터의 개수도 다르고 똑같은 용도인 레지스터도 CPU마다 이름이 다른 경우도 있다. 그럼에도 대부분의 CPU가 공통적으로 사용하는 레지스터들. 프로그램 카운터: 현재 CPU가 실행할 다음 명령어의 주소를 저장한다. 명령어가 실행될 때마다, 프로그램 카운터는 다음 명령어의 위치로 업데이트된다. 즉, 갖고 오고자 하는 주소를 CPU로 갖고 왔다면 프로그램 카운터는 1증가. 명령어 레지스터: CPU가 현재 실행 중인 명령어를 저장한다. 명령어가 프로그램 카운터로부터 가져와질 ..

7. ALU와 제어장치

ALU와 제어장치 CPU 내부에는 여러 가지 부품들이 있지만 크게 ALU, 제어장치 그리고 여러 개의 레지스터로 이루어져 있다. ALU는 그중에서도 계산하는 장치고, 제어 장치는 제어신호를 발생시키고 명령어를 해석하는 장치다. 앞으로 ALU가 내보내고 받아들이는 정보는 무엇인지 제어 장치가 내보내고 받아들이는 정보는 무엇인지에 대해서 알아볼 것. ALU ALU는 CPU 내부에 있는 계산을 위한 계산기 같은 회로 레지스터로부터 피연산자를, 제어 장치로부터 제어 신호를 받아들인다. → 계산에 필요한 정보들 ALU는 이렇게 받아들인 피연산자와 제어 신호를 바탕으로 연산을 수행한다. 연산의 결과값은 숫자가 될 수도 있고, 문자가 될 수도 있고, 주소가 될 수도 있다. 0과 1로 표현된 컴퓨터가 이해할 수 있는 ..

리눅스 chmod 명령어

chmod chmod 명령은 UNIX와 유닉스 계열 시스템(리눅스, macOS 등)에서 파일이나 디렉터리의 접근 권한을 변경하는 데 사용된다. chmod는 'change mode'를 뜻하고 파일이나 디렉터리에 대해 읽기(read), 쓰기(write), 실행(execute) 권한을 설정할 수 있다. chmod 명령에서 사용하는 권한 값 읽기(r): 파일의 내용을 읽을 수 있는 권한, 디렉터리의 경우 내용을 볼 수 있는 권한. 쓰기(w): 파일의 내용을 수정할 수 있는 권한, 디렉터리의 경우 파일을 생성하거나 삭제할 수 있는 권한. 실행(x): 파일을 실행할 수 있는 권한, 디렉터리의 경우 디렉터리 내로 이동할 수 있는 권한. chmod 명령의 세 자리 숫자 chmod 명령에서 세 자리 숫자는 각각 파일이나..

practical 2023.11.06

6. 명령어의 구조와 주소 지정 방식

명령어의 구조와 주소 지정 방식 명령어의 구조 ‘무엇을 대상으로, 무엇을 수행하라’ 컴퓨터 명령어는 일반적으로 두 가지 주요 구성 요소로 이루어져 있다: 연산 코드(opcode)와 오퍼랜드(operand). 연산 코드는 ‘무엇을 수행하라’를 담고 있고 오퍼랜드는 연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치를 오퍼랜드라고 한다. 특히 연산에 사용될 데이터가 저장된 위치를 훨씬 더 자주 저장한다. 이런 점에서 오퍼랜드가 담기는 그 공간 즉 오퍼랜드 필드를 주소 필드라고 부르기도 한다. 연산 코드 (Opcode): 연산 코드는 수행할 연산의 종류를 지정한다. 즉, CPU에게 무슨 일을 해야 할지를 알려주는 부분이다. 예를 들어, 덧셈, 뺄셈, 데이터 이동, 비교 또는 분기 등의 기본적인 연산..

5. 소스 코드와 명령어

소스 코드와 명령어 소스 코드와 명령어 프로그램을 개발하기 위해 작성하는 소스 코드가 어떻게 컴퓨터를 동작시키는 명령어로 변환되는지에 관한 이야기. 개발자가 작성한 소스코드를 컴퓨터는 대부분의 경우 바로 이해를 할 수 없다. Java나 python 같은 프로그래밍 언어들은 고급 언어라고 하는데. 고급 언어들은 개발자가 읽고 쓰기 편하게 만들어진 언어다. 그리고 이러한 고급 언어로 작성된 소스 코드가 컴퓨터 내부에서 실행될 때는 저급 언어로 변환되어 실행된다. 고급 언어: 개발자가 읽고 쓰기 편하게 만들어진 언어 저급 언어: 컴퓨터가 이해하고 실행하는 언어 저급 언어(기계어와 어셈블리어) 저급 언어는 성능 최적화와 하드웨어 제어가 필요한 시스템 프로그래밍, 임베디드 시스템, 드라이버 개발 등에 주로 사용된..