Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

Computer Science40

9. 명령어 병렬 처리 기법 📱명령어 병렬 처리 기법📱 명령어 파이프라인 명령어들을 겹쳐서 실행 ! (명령어가 처리되는 과정을 비슷한 시간 간격으로 나눈다면?) 1. 명령어 인출(메모리로부터 가져옴) 2. 명령어 해석 3. 명령어 실행 4. 결과 저장 같은 단계가 겹치지만 않으면 CPU는 각 단계를 동시에 실행할 수 있다! 명령어 파이프라이닝 - 동시에 여러개의 명령어를 겹쳐서 실행하는 기법. 파이프라인 위험 명령어 파이프라인이 성능 향상에 실패하는 경우(병렬로 명령어가 제대로 처리되지 못하는 경우) 1. 데이터 위험 - 명령어 간 의존성에 의해 발생 (이전 명령어를 끝까지 실행해야 이후에 실행 가능한 경우) ex. R1 = R2 + R3(R2와 R3를 더한 값을 R1에 저장) R4 = R1 + R5 (이 경우 R1에 값이 할당되어.. 2023. 8. 18.
8. CPU 설계 기법(클럭, 코어, 스레드) 📱CPU 설계 기법📱 컴퓨터를 빠르게 하려면?? 1. 컴퓨터 부품들은 '클럭 신호'에 맞춰서 움직이고, CPU는 '명령어 사이클' 흐름에 맞춰 명령어들을 실행한다. -> 클럭 주기를 빠르게 만들어 주면 '일반적으로' CPU를 포함한 부품들이 빠르게 동작한다. but 클럭 속도를 과도하게 높이면.. '발열' 문제가 생김. 클럭 속도: 헤르츠(Hz) 단위 측정_ 1초에 클럭이 반복되는 횟수 (ex. 4.9GHz는 1초에 49억번) 2. 코어 수를 늘리기 전통적으로 명령어를 실행하는 부품은 CPU 내부에 하나만 존재했다. 하지만 기술이 발전함에 따라 CPU 내부에 명령어를 실행하는 부품이 여러개 존재하게 되었고, 이제 명령어를 실행하는 부품을 '코어'라 부른다. 코어를 여러개 가지고 있는 CPU를 '멀티코어 .. 2023. 8. 16.
7. 명령어 사이클과 인터럽트 📱명령어 사이클과 인터럽트📱 CPU는 기본적으로 메모리에 저장되어 있는 명령어를 순차적으로 처리한다.(일정한 주기,흐름이 있음) -> 명령어 사이클 이러한 사이클을 끊는 신호를 인터럽트 라고 함. 명령어 사이클 프로그램 속 명령어들은 일정한 주기에 따라 반복되며 실행됨. ex. 메모리로부터 CPU에 명령어를 가져오는 것 -> 인출 사이클 / 이를 실행 -> 실행 사이클 ... 인출 - 실행 - 인출 - 실행 ... cf. 간접 사이클 인터럽트 CPU의 흐름을 끊는 것이 인터럽트.. CPU가 빠르게 처리해야 하는 다른 작업이 생겼을 때 인터럽트가 발생함. 동기 인터럽트(exception) 에러핸들링이 자연스레 떠오르는 동기 인터럽트 비동기 인터럽트(하드웨어 인터럽트) - 주로 입출력 장치에 의해 발생함. .. 2023. 8. 13.
6. 레지스터 📱레지스터📱 레지스터는 'CPU 내부의' 작은 임시저장장치이다. 프로그램 속 명령어와 데이터는 실행 전/후로 레지스터에 저장된다. 레지스터의 종류는 다양하며 각기 역할도 다르다. 레지스터의 종류는 사실 CPU의 종류마다 다르기도 하다. 1. 프로그램 카운터 - 메모리에서 가져올(읽어 드릴) 명령어의 주소 (Instruction Pointer _명령어 포인터)라고 부르기도 함. 2. 명령어 레지스터 - 해석할 명령어(1번에서 읽어 들인 명령어) _ 해석은 제어장치가 함 3. 메모리 주소 레지스터 - 메모리의 주소를 저장함. (CPU가 주소 버스를 이용해야 하는 경우_ 시스템버스(데이터,제어,주소) 즉 CPU가 읽으려는 메모리의 주소를 주소 버스로 보낼 때 거치는 레지스터 4. 메모리 버퍼 레지스터 - 메모.. 2023. 8. 13.
5. ALU와 제어장치 📱ALU와 제어장치📱 CPU는 크게 ALU, 제어장치, 여러 개의 레지스터로 구성되어 있다. ALU: 계산 장치(Arithmetic and Logical Unit) 제어 장치: 제어 신호 발생 및 명령어 해석 [ALU] ALU가 계산을 하기 위해서 필요한 정보들은? 피연산자와 수행할 연산이다. ALU가 내보내는 정보 피연산자(숫자 등)은 레지스터로 부터 받고, 수행할 연산(사칙연산 등)은 제어장치의 제어신호로 받아들인다. 연산의 결과는 또 레지스터로 보낸다.(메모리보다 접근 속도가 빠르기 때문) ALU는 플래그(flag)라는 정보를 플래그 레지스터에 보내기도 하는데, 플래그는 '연산 결과에 대한 부가 정보'를 말한다. ex. 0과 1로(이진법으로) 숫자로 표현할 때 양수인지 음수인지 컴퓨터가 구별하기 .. 2023. 8. 10.
4. 명령어의 구조 📱명령어의 구조📱 우리가 작성한 소스코드는 컴퓨터 내부에서 저급언어로 변환돼서 실행된다. 저급 언어는 크게 기계어, 어셈블리어로 나뉘고! 이런 저급 언어는 결국 명령어이다. 명령어들은 어떻게 생겼고 어떻게 동작할까? 우리가 강아지에게 명령을 하면 솔아 공 물어와! 라고 할 수 있을 것이다. 컴퓨터에서도 마찬가지로, '무엇에 대해 무엇을 수행하라' 라고 명령을 한다. 명령어의 구조는 간단하게 아래와 같다. 수행할 연산 + 연산에 사용되는 데이터 or 연산에 사용되는 데이터가 저장된 위치. ex. 더해라 + 10과, 20을 ex. 나눠라 + 100을, 메모리 20번지의 값으로 ex. 저장해라 + 10을, 메모리 128번지에 연산코드 + 오퍼렌드(데이터/데이터 위치) 오퍼랜드 오퍼랜드에는 연산에 필요한 데이터.. 2023. 7. 16.