Computer Science/Computer Architecture14 [컴퓨터 구조] 플래시 메모리 ■ 플래시 메모리 (Flash Memory)플래시 메모리란, 전기적으로 데이터를 읽고 쓰는 반도체 기반의 저장 장치이다. 비휘발성 기억장치인 ROM에도 사용이 되고, DRAM/SRAM 등의 휘발성 장치에도 사용이 되어진다. 주로 사용되는 보조기억장치로는 HDD, SSD, USB 등이 있다. 이중에서 SSD, USB는 플래시 메모리에 속하는 저장장치이다. ▼ 출처 (PaxDisk) 플래시 메모리는 크게 NAND 메모리, NOR 메모리의 종류로 나뉜다. 이 중에서 대용량 저장장치로 주로 사용되어지는 것은, 비교적 저렴한 가격의 특징을 가진, NAND 플래시 메모리이다.■ NAND 플래시 메모리 논리적 구조플래시 메모리는 셀(Cell)을 가장 작은 단위로 사용하고 있다. 이 셀들이 모여 KB부터 TB 등의 .. 2024. 12. 1. [컴퓨터 구조] 메모리 계층 구조, 캐시 메모리 ■ 메모리 계층 구조 (Memory Hierarchy)저장 장치의 예로 레지스터, 메모리(RAM), USB 메모리가 있다. 이러한 저장 장치의 대표적인 특징 두 가지로는 첫째, CPU와 가까울 수록 저장 장치의 접근 속도는 빠르고, 멀리있을 수록 느리다.둘째, 속도가 빠른 저장 장치는 비싸고 용량이 작으며 거리가 멀어질수록 반대된다. 이러한 특징으로 인하여 컴퓨터는 여러 개의 저장 장치를 혼용해서 사용한다. 그 여러 개의 저장 장치의 계층 구조를 세 가지 특성을 기준으로 나타낸 것을 메모리 계층 구조(Memory Hierarchy)라고 한다.* 여기서 말하는 Memory 는 Ram이 아니라 저장 장치 Memory를 의미한다. ■ 캐시 메모리 (Cache Memory)CPU가 메모리에 접근하는 시간은 C.. 2024. 12. 1. [컴퓨터 구조] 메모리 주소 ■ 물리 주소 & 논리 주소(1) 물리주소 : 메모리 하드웨어가 사용하는 주소 (정보가 실제로 저장된 하드웨어상의 주소)(2) 논리주소 : CPU와 프로세스가 사용하는 주소 (프로세스 각각에 부여된 0번지 부터 시작되는 주소) * CPU와 프로세스는 현재, 물리적 주소인, 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있지 않다. 그 이유는 프로그램이 메모리에 적재될 때마다 주소가 달라지고, 다른 프로그램이 실행되거나 삭제될 때마다 모든 주소가 달라지기 때문이다. 이런 상황에서 현재 프로세스와 CPU가 특정 메모리 주소에 접근할 때 어떻게 동작할까? 먼저 CPU가 이해하는 주소는 논리주소이기 때문에 메모리와 상호작용을 하려면 논리주소와 물리주소 간의 변환이 이루어져야 한다. 서로 다른 주소 체계를 .. 2024. 12. 1. [컴퓨터 구조] RAM ■ RAM의 종류1. DRAM (Dynamic Ram)저장된 데이터가 주기적으로 소멸되는 RAM이다. 이를 방지하기 위해 주기적으로 데이터를 재활성화해야 하는 단점이 존재한다. 하지만, 그럼에도 불구하고 우리가 일반적으로 사용하는 메모리는 DRAM이다. 이는 경제적인 이유에서 오는데소비 전력이 낮고 저렴하면서 집적도가 높기 때문에 대용량으로 설계하기가 용이하기 때문이다. * 집적도: 집적도란 1개의 반도체 칩에 몇 개의 소자가 들어가 있는지를 나타내는 정도이다. 즉, 집적도가 높다는 것은 소자들이 더 빽빽하게 들어갈 수 있다는 뜻. (출처: 토스) ※ 늘 그렇듯 비쌀수록 성능이 좋고 단점이 적으며, 저렴할수록 성능은 비교적 안좋고 단점이 많아진다. 2. SRAM (Static Ram)시간이 지나도 저장.. 2024. 12. 1. [컴퓨터 구조] ISA, CISC, RISC ■ ISACPU는 제조사마다 생김새, 연산 및 주소 지정 방식에 차이가 있다.이러한 CPU가 이해할 수 있는 명령어들의 모음을 '명령어 집합(Instruction Set)' 또는 '명령어 집합 구조(ISA; Instructio Set Architecture)'라고 부른다. 즉 CPU마다 각기 다른 ISA를 가질 수 있다. 예로 인텔이나 AMD의 x86, x86-64의 ISA와 애플의 ARM ISA는 서로 다른 ISA이기 때문에 별도의 작업 없이 인텔의 CPU에서 빌드한 실행 파일을 그대로 아이폰에 옮겨 실행하면 바로 실행이 안된다. 왜냐하면 실행 파일(exe)은 명령어로 이루어져 있고, CPU마다 이해할 수 있는 명령어가 다르기 때문이다. 예시로 동일한 C++ 코드를 gcc 14.2라는 동일한 컴파일러를.. 2024. 10. 6. [컴퓨터 구조] 명령어 병렬 처리기법 (ILP) ■ 명령어 병렬 처리 기법 (ILP; Instruction-Level Paallelism)좋은 성능의 CPU 제작을 위해 높은 클럭 속도, 멀티 코어, 멀티 스레드를 지원하는 CPU를 만드는 것도 중요하다. 하지만, 코어와 하드웨어 스레드 개수에 상관없이 효율적으로 CPU 자원을 사용하기 위해서는 명령어 병렬처리 기법이 필요하다. 대표적인 종류는 (1) 명령어 파이프라인(2) 슈퍼스칼라(3) 비순차적 명령어 처리 위 세 가지가 있다. ■ 명령어 파이프라인명령어 처리 과정은 크게 '인출', '해석', '실행', '메모리 접근', '결과 저장' 의 여러 단계를 순서대로 진행된다.처리 단계가 겹치지만 않다면 CPU는 각 단계를 동시에 [클럭 한 번에] 실행할 수 있다. 그렇기에 여러 개의 명령어를 단계가 겹.. 2024. 10. 6. [컴퓨터 구조] 명령어 사이클, 인터럽트 ■ 명령어 사이클 (Instruction Cycle)우리가 실행하고 있는 프로세스는 수 많은 명령어로 구성이 되어있다.CPU는 이 명령어를 하나씩 실행하게 되고, 각각의 명령어들은 일정한 주기로 반복되며 실행되어진다.이렇게 하나의 명령어를 처리하는 정형화된 주기를 명령어 사이클이라고 한다. [단계]일단 아래와 같이 크게 두 가지의 사이클이 반복된다. (1) 인출 사이클 (Fetch Cycle)아래 레지스터(Register) 관련 포스팅에서 메모리로부터 명령어를 CPU 내 IR(Instruction Register)로 갖고 오는 단계까지가 인출 사이클의 과정이다. 이와 같이 메모리로부터 실행해야할 명령어를 CPU로 가져오는 단계를 '인출 사이클'이라고 한다.https://yjhdevelopdiary.tis.. 2024. 10. 2. [컴퓨터 구조] 레지스터 (Register) ■ 레지스터레지스터는 CPU 내부의 작은 임시저장장치이다.프로그램 속 명령어 & 데이터는 실행 전후로 반드시 관련 값들이 레지스터에 저장됨. 그렇기에 레지스터 값만 잘 관찰해도 프로그램의 실행 흐름을 잘 파악할 수 있다.(보통, 깊숙한 곳까지 봐야하는, 로우레벨 개발자분들이 많이 관찰하신다고 함)* 레지스터에는 다양한 종류가 있으며, 각각의 역할이 다르다. [반드시 알아야할 레지스터 종류] 1. 프로그램 카운터 (PC) 2. 명령어 레지스터 3. 메모리 주소 레지스터 4. 메모리 버퍼 레지스터 5. 플래그 레지스터 6. 범용 레지스터 7. 스택 포인터 8. 베이스 레지스터 * CPU 종류마다 레지스터 종류 및 네이밍이 다를 수 있음 ■ 프로그램 카운터 (PC; Program Counter)· 메모리에.. 2024. 9. 17. [컴퓨터 구조] 명령어, 주소 지정 방식 ■ 명령어 구조명령어는 '무엇을 대상'으로 '어떤 작동'을 해야하는 지에 관한 데이터들이 내포되어 있다.이를 아래와 같이 표현할 수 있다.위 예시에서 노란색 배경은 '더해라'의 동작을 담고 있다. 이러한 동작을 담고있는 영역을 '연산 코드 (Operation Code)'라고 칭하고 하얀색 배경에는 피연산자의 데이터가 들어가있다. 이와 같이 연산에 사용되어지는 데이터 혹은 데이터가 존재하는 주소값을 저장하고 있는 영역을 '오퍼랜드 (Operand)'라고 한다. ※ 즉, 명령어는 아래와 같이 '연산 코드'와 '오퍼랜드 필드'로 구성 되어진다. 오퍼랜드 필드는 '연산에 사용될 데이터' 혹은 '그 데이터가 저장된 위치'를 의미한다고 했다. 다만, 오퍼랜드 필드에는 데이터가 직접적으로 명시되기 보다는 데이터가 저.. 2024. 9. 17. 이전 1 2 다음