캐시 메모리(Cache Memory)란?? 💰💰
·
CA
캐시 메모리 캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도를 줄이기 위해 사용합니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 프로세서가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 하면 시스템 성능을 향상할 수 있습니다. 데이터 요청이 들어오면, 먼저 캐시에서 데이터를 탐색합니다. 캐시가 없거나 오래된 경우 원본 데이터가 저장된 곳에서 데이터를 조회하게 됩니다. 이후 캐시에도 데이터를 복사/갱신하게 됩니다. 이때 오래된 데이터는 삭제합니다. 작동 원리 (데이터 지역성) 캐시의 지역성 지역성이란 기억장치 내의 정보를 균일하게 접근하는 것이 아닌 어느 한순간에 특정 부분을 집중적으로 참조하는 특성을 뜻 합니다. 데이터의 접근이 시간적, 공간적으로 가..
메모리 주소공간!! 🎁🎁
·
CA
메모리 주소공간에 대해서 알아보도록 하겠습니다!!!!!! 주소 공간 (Address Space) 메모리의 주소 공간의 위 사진 처럼 표현합니다. CPU는 주소값을 통해 메모리에 접근할 수 있습니다. 위 예시에서 0번지의 주소에 대응하는 명령어는 0100 1111 임을 알 수 있습니다. 그리고 메모리의 단위는 비트(bit)가 아니라 바이트(byte)입니다. 즉, 위 사진에서 주소 한칸은 1 byte의 데이터를 저장할 수 있습니다. 주소 공간이 2^32라는 것은, 주소의 길이가 32비트 라는 것이고, 저장할 수 있는 칸이 2^32개 라는 뜻입니다. 물리적 주소 (Physical Address) 메모리의 기능은 '데이터를 저장하는 컨테이너' 입니다. 단순히 크기가 매우매우 큰 배열로 생각히도 무방합니다. 배열..
ALU와 제어장치 (ALU and Control Unit)
·
CA
ALU? CPU는 메모리에 저장된 명령어를 읽어 들이고, 해석하고 실행하는 장치입니다. CPU 내부에는 ALU, 제어장치, 레지스터가 있습니다. ALU는 계산(산술, 논리 연산)에 관여하는 부품입니다. ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들입니다. 받아들인 것들을 통해 다양한 연산을 하고, 정보를 내보냅니다. ALU가 내보내는 값 1. 연산결과 내보내는 값들로는 숫자나 문자 또는 특정 메모리 주소가 될 수도 있습니다. 이 결과들은 메모리에 곧바로 저장되지 않고, 일시적으로 레지스터(MAR)에 저장됩니다. (CPU가 메모리에 접근하는 속도가 느리기 때문입니다.) 2. 플래그 플래그는 연산 결과에 대한 추가적인 정보를 내보낼 때 사용됩니다. A..
명령어 파이프라인 🔨🔨
·
CA
명령어 파이프라이닝(Instruction Pipelining) 이란? CPU의 성능은 곧 컴퓨터 시스템의 프로그램 처리 시간에 직접적 영향을 미칩니다. CPU의 속도를 향상 시키면 향상시킬수록 매우 좋은다. 향상 시키는 방법중 하나가 오늘 알아볼 명령어 파이프라이닝 입니다. 명령어 파이프라이닝은 매우 간단하면서 분명한 효과를 미칩니다. 명령어 파이프라이닝의 원리는 다음과 같습니다. 명령어를 실행하는데 사용되는 하드웨어를 여러 개의 독립적인 단계(stage)들로 분할합니다. 각 단계별로 동시에 서로 다른 명령어들을 처리 합니다.(이는 곧 CPU 성능 향상으로 이어집니다.) 분할되는 단계가 많아질수록 CPU의 성능은 향상됩니다. 2-단계 명령어 파이프라이닝 명령어 사이클은 기본적으로 인출 사이클/실행 사이클..
명령어구조에 대해서 알아보자!! (*/ω\*)
·
CA
명령어란? 명령어는 특정 작업을 수행하기 위한 컴퓨터 프로그램의 명령입니다. 메모리에서 명령어를 가져와 해석하고 실행합니다. 명령어의 구조 명령어의 구조로는 연산 코드(Operation Code)와 오퍼랜드(operand) 가 있습니다. 명렁어가 수행할 연산을 연산 코드라 하고, 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치를 오퍼랜드라고 합니다. 연산 코드는 연산자, 오퍼랜드는 피연산자 라고도 합니다. 그리고 주소 결정 방식이 있는데, 오퍼랜드의 주소를 알아내는데 사용합니다. 오퍼랜드 오퍼랜드 필드에는 연산에 사용할 데이터 또는 연산에 사용할 데이터가 저장된 위치가 주로 옵니다. 숫자와 문자 등을 나타내는 데이터, 메모리 주소, 레지스터 등이 그 예 입니다. 많은 경우 메모리 주소나 레..
인터프리터 언어 vs 컴파일 언어 ╰(*°▽°*)╯
·
CA
무엇인가? 저번 블로그에서 고급언어는 그냥 실행시킬 수 없고 컴퓨터가 이해할 수 있는 언어로 변환되어 실행 되어야 한다고 말했었다. 고급 언어를 변환 시키는 방법에는 컴파일러와 인터프리터가 있는데 변환할 때에 컴파일러를 사용하면 컴파일 언어, 인터프리터를 사용하면 인터프리터 언어라고 한다. 컴파일러 언어 컴파일러란 특정 프로그래밍 언어로 쓰여있는 문서를 다른 프로그래밍 언어 또는 컴퓨터 언어로 옮기는 일종의 번역 프로그램이다. 보통 고급 프로그래밍 언어를 저급 프로그래밍 언어로 변환할 때 사용한다. 컴파일러 실행 과정 1. 구문 분석 단계 : 코드 구문이 문법에 맞는지 분석하는 단계이다. 2. 최적화 : 코드를 좀 더 효율적으로 만들어 코드 실행 시 실행기간을 절약할 수 있도록 하는 단계이다. 3. 목적..
고급언어? 저급언어?
·
CA
우리가 프로그래밍을 할 때 다양한 언어를 사용한다. 개발 분야에 따라 다를 수도 있고, 같은 분야라도 쓰임새에 따라 다를 수도 있다. 그렇다면 프로그래밍 언어는 모드 똑같은 형태일까?? 아니다!!! 오늘은 프로그래밍 언어를 크게 고급 언어와 저급 언어로 설명해 보도록 하겠다! 어떤 기준으로 프로그래밍 언어를 고급 언어와 저급 언어로 분류할까?? (우리가 아는 저급, 고급이 아닙니다!!!) 나는 그 기준이 "누가 얼마나 이해하고, 읽고 ,쓰기 쉬운가" 라고 생각한다. 저급언어 저급 언어는 기계 또는 컴퓨터가 이해하기 쉽게 작성된 프로그래밍 언어이다. 정확히는 컴퓨터와 직접적으로 소통할 수 있는 언어이다. 사용자보다는 컴퓨터 측면에서 개발한 언어이며, 이 언어는 컴퓨터의 이진수에 가깝끼 때문에 프로그래머가 ..