cs지식 11

메모리의 주소 공간 (물리주소, 논리주소)

물리 주소 메모리 입장에서 바라본 주소 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소 논리 주소 CPU와 실행 중인 프로그램 입장에서 바라본 주소 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소 주소의 변환 MMU(메모리 관리 장치) 라는 하드웨어에 의해 변환 MMU는 논리 주소와 베이스 레지스터(프로그램의 첫번째 물리 주소) 값을 더하여 논리 주소를 물리 주소로 변환 이렇게 되면 다른 데이터 삭제됨 한계 레지스터 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장 베이스 레지스터 ≤ 프로그램 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값 메모리 보호 ..

CS지식 쌓기 2023.12.29

RAM의 특성과 종류

RAM의 특징 휘발성 저장 장치이고, 보조 기억 장치는 비휘발성 저장 장치 RAM을 책상 크기에 비교하고 책장에서 책을 가져다놓을 수 있는 개수가 램의 크기라고 생각하면 됨. 보조 기억장치 - 책장, 책 - 프로그램, 사람 - CPU RAM의 종류 DRAM (Dynamic RAM) Dynamic = 동적의 저장된 데이터가 동적으로 사라지는 RAM 데이터의 소멸을 막기 위해 주기적으로 재활성화 해야함 일반적으로 사용됨 소비전력이 낮고, 저렴, 집적도가 높아 대용량 SRAM (Static RAM) Static = 정적의 저장된 데이터가 정적인 (사라지지 않는) DRAM보다 일반적으로 더 빠름 상대적으로 소비전력과 가격이 높고 집적도가 낮아 대용량으로 안되나 속도가 빠름 SDRAM (Synchronous DR..

CS지식 쌓기 2023.12.29

명령어 집합 구조, CISC, RISC

명령어 집합(구조) CPU가 이해할 수 있는 명령어들의 모음 CPU의 언어(ISA)인 셈 CISC (Complex Instruction Set Computer) 복잡한 명령어 집합을 활용하는 컴퓨터(CPU) 명령어의 형태와 크기가 다양한 가변 길이 명령어를 활용 다양하고 강력한 명령어 활용 상대적으로 적은 수의 명령어로도 프로그램 실행 가능 명령어 파이프라이닝이 불리(크기가 다 달라 일정하지 않음) RISC ( Reduced Instruction Set Computer) 명령어의 종류가 적고, 짧고 규격화된 명령어 사용 CISC에 비해 파이프라이닝이 유리 메모리 접근 최소화, 레지스터 십분 활용 프로그램을 이루는 명령어의 수가 많음

CS지식 쌓기 2023.12.29

명령어 병렬 처리 기법

명령어 파이프라인 순서 명령어 인출 명령어 해석 명령어 실행 결과 저장 (같은 단계가 겹치지만 않는다면 CPU는 각 단계를 동시에 실행하는 기법) 파이프라인 위험 : 명령어 파이프 라인이 성능 향상에 실패하는 경우 데이터 위험 명령어 간의 의존성에 의해 야기 (전 명령어가 끝나야만 다음 명령어 가능) 제어 위험 프로그램 카운터의 갑작스러운 변화 구조적 위험 서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터)을 쓰려고 할 때 슈퍼스칼라 CPU 내부에 여러 개의 명령어 파이프 라인을 포함한 구조 이론적으로는 파이프라인 개수에 비례하여 처리 속도 증가 개수가 많아지면 파이프라인 위험도의 증가 파이프라인 개수에 비례하여 처리 속도가 증가하진 않음 비순차적 명령어 처리 파이프라인의 중단을 방지하기 위해 명령..

CS지식 쌓기 2023.12.29

클럭,코어,스레드

컴퓨터 부품들은 클럭 신호에 맞춰 움직임 클럭 속도 클럭 속도 : Hz 단위로 측정 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수 클럭이 ‘똑-딱’하고 1초에 한 번 반복되면 1Hz 클럭이 1초에 100번 반복되면 100 Hz 필요 이상으로 클럭을 높이면 발열이 심각해짐 CPU 속도를 늘리는 방법? 클럭 속도를 늘리는 방법 이외에는? 코어 수를 늘리는 방법(듀얼코어, 멀티코어) 스레드 수를 늘리는 방법(멀티스레드) 코어 CPU와 더불어 명령어를 실행하는 부품 CPU 내에서 명령어를 실행하는 부품으로 여러 개 있을 수 있음 멀티코어 - CPU 안에 여러개의 코어를 포함하고 있음 코어 수에 비례하여 꼭 성능이 증가하진 않음 스레드 하드웨어적 스레드 하나의 코어가 동시에 처리하는 명령어 단위 논리 프로세서라고..

CS지식 쌓기 2023.12.29

명령어 사이클과 인터럽트

명령어 사이클 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클이라고 함 인출 사이클 - 가장 먼저 CPU로 갖고 와야 한다 실행 사이클 - 갖고 왔으면 실행해야 한다 보통은 인출 - 실행으로 사이클을 돌리지만 어떤 명령어는 메모리 접근이 더 필요한 경우 간접 사이클을 거쳐 실행 사이클로 감 인터럽트 정해진 흐름을 끊는 것 CPU가 주목해야할 때, CPU가 얼른 처리해야 할 다른 작업이 생겼을 때 발생 동기 인터럽트(예외) CPU가 예기치 못한 상황을 접했을 때 폴트, 트랩, 중단, 소프트웨어 인터럽트 비동기 인터럽트(하드웨어 인터럽트) 주로 입출력 장치에 의해 발생 알림(세탁기 완료 알림, 프린트 완료)과 같은 역할 CPU가 입출력 작업 도중에도 효율적으로 명령어를 처리..

CS지식 쌓기 2023.12.29

레지스터

프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어 들일 명령어 주소) 명령어 레지스터 : 해석할 명령어(방금 메모리에서 읽어 들인 명령어 메모리 주소 레지스터 : 메모리의 주소(CPU가 읽어 들이고자 하는 주소를 주소 버스로 보낼 때 거치는 레지스터 메모리 버퍼 레지스터 : CPU가 정보를 데이터 버스로 주고 받을 때 거치는 레지스터 실행과정 첫번째 명령어부터 실행된다고 했을 때 프로그램 카운터에 첫번째 명령어 주소가 저장됨 읽고자 하는 주소를 메모리 주소 레지스터에 복사된다 메모리 읽기 신호와 함께 몇번지 주소를 읽고싶은지 쏴줌 프로그램 카운터 1증가 데이터 버스를 통해서 해당 주소의 값을 메모리 버퍼 레지스터에 저장 명령어 레지스터에 해석할 명령어를 복사 플래그 레지스터 연산 결과 ..

카테고리 없음 2023.12.29

ALU와 제어장치

ALU 계산하는 장치 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들임 플래그 연산 결과에 대한 부가 정보 ( 양수인지 음수인지 따로 내보내는 값) 결과를 담을 레지스터에 비해 결과가 클 때 플래그 레지스터로 담김 제어장치 제어 신호를 발생 시키고 명령어를 해석하는 장치 받아들이는 정보 - 클럭, 명령어 레지스터, 플래그 레지스터 내보내는 정보 - 제어신호(To 레지스터, ALU. 메모리, 입출력장치

CS지식 쌓기 2023.12.29

고급언어, 저급언어

고급언어 개발자가 이해하기 쉽게 만든 언어 저급언어 컴퓨터가 이해하고 실행하는 언어 기계어 - 이진수, 십육진수로 표현 어셈블리어 - 0과 1로 이루어진 기계어를 읽기 편한 상태로 한 번 바꿔준 언어 컴파일 언어 컴파일러를 통해 저급언어로 변환, 목적 코드(저급언어) 생성 한번에 코드를 훑어서 저급언어로 변환 오류가 있으면 실행안됨 인터프리트 언어 한줄씩 읽어 변환 소스코드 전체가 변환될 때까지 기다릴 필요 없음 오류가 있으면 그 직전까지는 실행됨

CS지식 쌓기 2023.12.29

정보단위, 인코딩

비트 : 0과 1 1024씩 묶은 단위는 따로 있다 워드(word) CPU사 한 번에 처리할 수 있는 정보의 크기 단위 하프 워드 : 워드의 절반 크기 풀 워드 : 워드 크기 더블 워드 : 워드의 두 배 크기 이진법 0과 1로 수를 표현하는 방법 숫자가 1을 넘어가는 시점에 자리 올림 음수를 표현하기 위한 방법 - 보수 값의 0과 1을 뒤집고 1 더하기 플래그 레지스터에 양수나 음수를 표시됨 십육진법 숫자가 15를 넘어가는 시점에 자리올림 10부터 A, B, C… 16이 10 / 17이 11 쉬움이진수 → 십육진수 변환 아래와 같이 이진수를 네자리로 나눠서 변환하면 반대로도 문자집합과 인코딩 문자집합 컴퓨터가 이해할 수 있는 문자의 모음 인코딩 코드화하는 과정 문자를 0과 1로 표현된 문자 코드로, 문자..

CS지식 쌓기 2023.12.29