본문 바로가기

lesson/computer architecture9

CPU 코어와 스레드란 무엇인가 우선 CPU의 물리적 연산부가 코어입니다. 그렇다면 스레드는 무엇일까요? 이러한 코어 자체로만 연산을 하는 것보다 조금 더 높은 연산 효율을 내기 위해서 스레드라는 논리적 가상 작업공간을 만들었습니다. 가상의 공간이라는 것이죠.  이러한 스레드를 가지고 인텔에서는 하이퍼 스레딩이라는 기술을 통해 연산 속도를 낮춘 것으로 유명하죠. 운영체제에서도 자주 언급되는 주제입니다. 2024. 8. 13.
CPU 캐시란 무엇인가? cpu에서는 L1, L2, L3 캐시라는 명칭으로 잘 알려져 있습니다. 흔히 컴퓨터 구조 강의에서는 교수님이 자주 보는 논문은 책상 위에 놓고, 조금 덜 자주 보는 논문은 책장에 꽂아놓고 그것보다 덜 중요하면 도서관에서 그때그때 발려본다는 비유를 들었던 기억이 납니다. 저 비유 속에는 지역성이라는 캐시의 구조에 대해서 설명할 때 중요한 개념이 나옵니다.  가까운 순서대로 L1, L2, L3로 분류가 되며 코어에 가까운 캐시일수록 용량은 작습니다. 답은 비싸기 때문이죠. 달리 생각해보면 집 앞에 있는 편의점의 가격과 대형 창고매장의 가격이 다른 것과 같습니다. 같은 물류창고에서(메모리에서) 데이터를 읽어오는 과정에서 코어의 바로 앞에 있는 L1 캐시에(편의점) 데이터를 받아오는 비용이 높은 것처럼 말이지요.. 2024. 8. 13.
DIMM이란 무엇인가? Dual Inline Memory Module  64비트 컴퓨터 메모리 유형이며, RAM을 연결하기 위한 기판 스트립입니다. 즉, 메모리 규격의 일종입니다. 메인보드의 종류에 따라 이러한 메모리 모듈의 종류도 천차만별이 됩니다. 2024. 8. 12.
메모리 구조: 코드, 데이터, 힙, 스택 2024. 6. 17.
컴퓨터 파일 용량 확인 b kb mb gb tb한 단위 올라갈 때마다 1024를 곱해주면 된다 2024. 6. 16.
빅 엔디안과 리틀 엔디안 빅 엔디안과 리틀 엔디안은 바이트 순서를 나타내는 방식이다. 빅 엔디안은 가장 중요한 바이트(최상위 바이트)가 가장 낮은 주소에 저장된다. 예) 32비트 상에서 0x12345678 => 주소 | 바이트 || ============= 0x001 | 0x12 || 0x002 | 0x34 || 0x003 | 0x56 || 0x004 | 0x78 || 리틀 엔디안은 가장 중요한 바이트가 가장 높은 주소에 저장된다. 예) 32비트 상에서 0x12345678 => 주소 | 바이트 || ============= 0x001 | 0x12 || 0x002 | 0x34 || 0x003 | 0x56 || 0x004 | 0x78 || Intel이나 AMD의 CPU가 대다수 리틀 엔디안을 따르고 있는 편이다. 사실상 PC용으로 .. 2024. 2. 6.
자유 저장소와 자동 메모리 메모리 구조에서 힙과 스택은 각각 자유 저장소와 자동 메모리라는 호칭을 가지고 있다. 먼저 자유 저장소라고 하는 힙 영역에 대해 알아보자. 여기서의 힙은 힙 자료구조와는 다르다는 것을 기억할 필요가 있다. 아래에서 설명할 자동 메모리와 다르게 사용자가 직접 할당하고 해제도 해줘야 한다는 특징이 있다. 다음으로 자동 메모리라고 하는 스택 영역에 대해서 알아보자. 자동 메모리에는 자동변수가 사용이 된다. 자동변수에는 기본적으로 auto라는 키워드가 생략되어 있다. 여기서 메모리는 자동으로 관리된다. 자동으로 관리된다는 말의 의미는 무엇인가? 프로그래머가 신경쓰지 않아도 자동으로 메모리를 해제하기 때문이다. 2024. 1. 28.
RISC-V 32비트 명령어와 format 2023. 11. 4.
0xf, 0xff, 0xfff, 0xffff은 무슨 의미인가 컴퓨터 메모리에 대해 공부하다 보면, 제목과 같은 표현이 아주 많이 등장한다. 앞의 0x는 뭘 의미하고? 뒤의 ffff은 무엇인가? 우선 앞의 0x는 16진수를 의미한다. 0부터 9까지, 그리고 A부터 F까지, 총 15에 해당하는 최대값을 자리수로 가지는 방법을 의미한다. 그렇다면 f는 15를 의미하기에, 0xf = 15*16^0, 0xff = 15*16^1 + 15*16^0, 0xfff = 15*16^2 + 15*16^1 + 15*16^0, 0xffff= 15*16^3 + 15*16^2 + 15*16^1 + 15*16^0 를 의미한다. 이를 32비트 상에서 메모리 주소로 표현한다면, 0xf = 0000 0000 0000 0000 0000 0000 0000 1111, 0xff = 0000 0000 000.. 2023. 6. 27.