CPU는 다양한 제조사들이 있다. 규격과 기능 만듦새도 다 다르다. 그렇기 때문에 CPU가 이해할 수 있는 명령어 집합인 ISA가 CPU마다 다를 수 있다. 예를 들어 인텔의 CPU는 x86-64 ISA를 이해하고 애플의 CPU는 ARM ISA를 이해한다. 서로 다른 ISA를 이해하기 때문에 서로의 명령어를 이해할 수 없다. 이해하는 ISA가 달라지면 무엇이 달라지는가? 제어장치가 명령어를 해석하는 방식, 사용되는 레지스터의 종류와 개수, 메모리 관리 방법.... 많은 것들이 달라진다. 각 ISA마다 파이프라인, 슈퍼스칼라, 비순차적 명령어 처리를 사용할 때 유리한 ISA도 있고 아닌 경우도 있다. CISC CISC는 (Complex Instruction Set Computer) 복잡한 명령어 집합을 활..
빠른 CPU를 만들려면 클럭, 멀티코어, 멀티스레드도 중요하지만 CPU가 얼마나 놀지 않고 계속 일하는 지도 중요하다. CPU를 쉬지 않고 작동시키는 기법인 명령어 병렬 처리 기법의 대표적인 기법인 명령어 파이프라이닝, 슈퍼스칼라, 비순차적 명령어 처리를 알아보겠다. 1. 명령어 파이프라인 CPU의 명령어 처리 과정은 (명령어)인출 - 해석 - 실행 - 결과 저장로 보통 이루어진다. 하지만 📌CPU는 겹치지만 않으면 각 단계를 동시에 실행할 수 있다. 위의 그림과 같이 명령어 1을 해석할 때 명령어 2를 인출하고.... 여러 명령어를 동시에 처리할 수 있게 해주어 더욱 빠른 명령어처리로 CPU의 성능을 올리는 기법이다. 명령어 파이프라인 또는 명령어 파이프라이닝이라고한다. ❗️파이프라인 위험 파이프라인은..
더 빠른 CPU를 만들기 위해서는 어떻게 해야할까? 빠른 CPU를 설계하기 위해서는 다음과 같은 것들을 고려한다. 1. 클럭 클럭이 왜 CPU 성능에 연관이 있을까? 1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 움직인다. 2. CPU는 '명령어 사이클' 이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 때문에 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들이 빠르게 움직이고 명령어 사이클도 빨라져서 명령어들이 더욱 빠르게 실행되어 컴퓨터의 속도가 빨라지게 된다. 오버클러킹 CPU의 클럭은 속도가 일정하지 않다! 그렇기 때문에 고성능을 요하는 순간에는 속도를 올리고 그렇지 않을 때는 낮추기도 한다. 최대 클럭 속도에서 강제로 클럭을 더 끌어올릴 수도 있는데, 이것을 오버클러킹이라고 한다. 📌 하지만..
ALU와 제어장치 ALU는 계산하는 부품이다. ALU는 레지스터를 통해 피 연산자를 받아들이고 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. ALU가 연산할 때마다 결과를 메모리에 저장하면 레지스터에 저장하는 것보다 메모리에 저장하는 것이 느리기 때문에 프로그램 실행속도가 느려질 수 있다. 그렇기 때문에 연산결과를 레지스터에 우선저장한다. 플래그? ALU는 계산결과와 플래그를 같이 내보낸다. 플래그는 플래그 레지스터에 따로 저장된다. 플래그는 연산 결과에 대한 추가적인 상태 정보를 말한다. 대표적인 플래그로는 아래와 같이 있다. 1. 부호플래그 : 연산한 결과의 부호를 나타낸다. 부호플래그가 1인 경우 계산 결과는 음수, 0일 경우는 양수를 의미 2. 제로 플래그 : 연산 결과가 0인지 여..
고급 언어와 저급 언어 고급 언어 = 사람을 위한 언어 ex) 파이썬, c언어, JAVA, swift 등등 저급 언어 = 기계를 위한 언어 컴퓨터가 직접 이해하고 실행할 수 있는 언어이며 ex) 기계어, 어셈블리어 컴파일 언어와 인터프리터 언어 고급 언어로 작성한 소스 코드는 저급 언어로 변환되어 실행된다. 저급 언어로 변환하는 과정을 컴파일이라고 한다. 저급 언어로 변환된는 방식에는 크게 두 가지 방식이 있다. 컴파일 방식과, 인터프리터 방식이 있다. 각각의 방식을 사용하는 언어가 컴파일 언어와 인터프리터 언어이다. 컴파일 언어는 컴파일이 실행 될 때 한번에 소스 코드 전체를 보며 문법적인 오류, 실행 가능한 코드인지, 불필요한 코드는 없는지를 따지며 하나라도 오류가 있을 시에 컴파일에 실패한다. 만약..
컴퓨터가 이해하는 정보단위 비트(bit) : 0과 1을 표현하는 가장 작은 정보단위 바이트(byte) : 비트 8개를 묶은 단위 워드 : CPU가 한 번에 처리할 수 있는 정보의 크기 단위 KB, MB, GB, TB 1바이트는 8비트로 이루어져 있다. 때문에 과거에 서술된 책들을 보면 1kB = 1024byte라고 적혀있는 책들이 많다. 하지만 요즘같이 용량 단위가 TB와 같이 거대해지는 경우 1024가 누적되어 다른 숫자가 되어버리기 때문에 잘못 표현하는 관습이라고 할 수 있다. 따라서 1kB = 1000byte라고 해야 하며 과거와 같이 표현하기 위해서 1KiB(= 1024byte)라는 표현법을 사용한다. 이진법 수학에서 0과 1만으로 모든 숫자를 표현하는 방법을 말한다. 우리가 보통 표현하는 숫자는..
컴퓨터구조를 알아야 하는 이유 1. 문제해결능력을 기를 수 있다. 컴퓨터의 구조를 이해하고 있다면 문제가 발생했을 때 상황을 빠르게 진단할 수 있고 문제해결의 실마리를 발견할 가능성이 높아진다. 2. 개발을 할 때 성능, 용량, 비용등을 고려하여 개발할 수 있게 된다. 내가 개발한 코드가 어느정도의 성능에서 돌아가는지를 파악해야 좋은 프로그램을 짤 수 있게 된다. 컴퓨터가 이해하는 정보 컴퓨터는 크게 데이터와 명령어로 구성이 되어있다고 볼 수 있다. 1. 데이터 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 그리고 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보를 가리킬 때 데이터라는 표현을 한다. 2. 명령어 컴퓨터를 실질적으로 작동시키는 정보 "안녕하세요"를 출력하라 "안녕하세요"..