https://youtu.be/1HM1m2hY2IY?si=sVh7_gCPMJHUnd4a
DRAM -> 시간이 지나면 데이터가 소멸되는 램, 메모리에 사용
SRAM -> 시간이 지난다고 데이터가 소멸되진 않음, 직접도낮고 비용비쌈, 빠르다 -> 캐시
SDRAM -> 클럭에 동기화되어 cpu와 정보교환 가능한 DRAM
DDR SDRAM -> 대역폭을 넓힌 SDRAM. 한 클럭당 두번의 데이터 전송.
램의 대역폭은 데이터버스와 클럭에 의해 결정된다.
램을 듀얼채널로 사용한다면 버스를 두배로 활용할 수 있게되어 64*2비트의 메모리 버스를 활용한다.
그럼 한 클럭에 두배의 데이터를 전송할 수 있기에 더 빠른 데이터 전송이 가능하다.
램의 메모리 클럭이 커지면 한 클럭당 할 수 있는 처리량이 늘어난다.
DDR세대가 증가해도 한클럭당 두번의 데이터를 전송하는 것은 동일하지만, 프리패치 버퍼가 커진다.
프리패치 버퍼
cpu가 메모리에 데이터를 요청하면, 메모리는 해당 주소의 데이터를 읽고 cpu에 보낼 준비를 해야 한다.
프리패치 버퍼는 cpu가 요청하는 데이터를 분석해 다음에 요청할 것 같은 데이터를 미리 로드해두고 저장하는 공간이다.
프리패치 버퍼가 커지면 작업 중 메모리가 받은 요청을 로드하고 가공하는 오버헤드를 줄일 수 있다.
물리주소와 논리주소.
프로그램이 실행될 때 메모리의 물리적주소의 어느 위치에 적재될지 알 수 없다.
그렇기에 명령어 상에서는 프로세스가 메모리에 적재된 주소를 기준으로 논리적으로
0번지부터 시작하여 논리 주소로 처리하고, 그 주소값이 메모리에 전달될 때, cpu의 mmu를 거쳐
mmu내부의 베이스 레지스터의 값을 더해서 실제 물리주소로 처리되게 된다.
다른 프로세스의 메모리 영역을 침범하지 않기 위한 한계 레지스터도 mmu 내부에 존재하고
이런 레지스터 값은 컨텍스트 스위칭 시에 메모리의 os의 커널 영역에 저장된다.
캐시
캐시는 cpu가 사용할법 한 데이터를 미리 불러와놓고 cpu가 메모리에 접근하는 것 보다 빠르게 전달해준다.
참조지역성 원리에 기반하여 적절한 데이터를 선 정해 메모리에 있는 데이터를 미리 로드해둔다.
loop를 예상하는 최근에 접근한 메모리 공간이나, 프로세스의 특정 기능을 위해 모여있는
인접한 메모리 공간의 데이터들.
nand 디스크는 셀들이 연결된 블럭 단위로 있기에 대용량 저장, 처리에 유리
nor 디스크는 각 셀에 random access가 가능하므로 펌웨어같이 큰 용량이 필요없지만 빠른 속도가 필요할때.
장치컨트롤러 장치드라이버
컴퓨터에 부착될 수 있는 주변장치는 매우 다양하기 때문에 규격화하기 어렵고
전송될 데이터 양과 전송률도 가지각색으로 매우 다르다.
그렇기에 cpu와 외부장치 사이에서 통신 규격화와 전송률 조정을 위한 장치가 필요하고
그 역할을 장치컨트롤러가 한다.
데이터레지스터를 통해 버퍼링을 통한 전송률 조정을 하고
상태레지스터로 사용가능 여부를 판별하며 제어 레지스터로 제어정보, 명령을 저장한다.
장치컨트롤러의 동작을 감지, 제어하기 위해 장치드라이버 소프트웨어가 필요하다.
장치컨트롤러가 컴퓨터와 정보를 주고 받을 수 있도록 OS가 실행한다.
장치컨트롤러의 주소.
최근 시스템은 주로 메모리맵 방식을 채택한다. 시스템에서 장치 인식 시 해당 장치 드라이버가
장치의 각 레지스터의 주소를 커널 영역에 저장해둔다. 특정 외부장치를 사용해야 하는 시스템 콜이 수행될 때
시스템 콜에는 시스템 콜 테이블 인덱스를 레지스터에 옮기는 과정이 포함되고
커널은 시스템 콜 테이블에 있는 주소를 이용해 그 작업의 주소로 이동해 수행한다.
해당 작업 과정에서 장치 드라이버를 호출한다. 이 장치드라이버는 장치 인식 시 주소를 커널 영역에 저장했기에
그 주소를 활용해서 장치의 레지스터에 접근한다. 상태 레지스터를 확인하고 제어 레지스터에 명령을 기록한다.
상태 레지스터가 busy 였다가 가용 가능한 상태가 되거나, 기록한 명령을 완수했을 때, 해당 장치 컨트롤러는
시스템의 cpu에 인터럽트 버스를 통해 인터럽트를 보낸다.
1. 상태레지스터가 busy였다면, 장치의 제어 레지스터의 인터럽트 플래그를 활성화해서 작업을 마무리 했을 때
cpu에 인터럽트를 보내게 설정해두고, busy 상태라 바로 수행할 수 없는 시스템 콜 프로세스의 pcb는 wait queue로 이동하게 된다.
인터럽트 우선순위
인터럽트가 여러개가 발생시에, FIFO 방식으로 수행되지 않고, 특정 인터럽트 서비스 루틴을 실행중에도
우선순위가 높은 인터럽트나, 인터럽트 비트를 비활성해도 무시하고 실행할 NMI 발생시에 순서가 바뀔 수 있다.
우선순위는 PIC라는 하드웨어를 통해 판별된다.
DMA
메모리와 입출력장치 사이 데이터 전송이 매 블럭단위로 cpu가 중개해준다면 cpu time을 너무 소모할 것으로
비효율적이기 때문에, DMA 방식을 사용한다.
cpu는 수행할 내용(전송할 주소와 연산내용)을 DMA 컨트롤러에게 명령한 후
메모리와 입출력장치 사이에서 DMA 컨트롤러에 의해
PCIe 버스와 같은 입출력 버스를 통해 데이터가 전송된다.
시스템버스를 활용하면 cpu와 같이 사용할 수 없기에 그를 위한 버스가 따로 존재한다.
기본 숙제
P185 3번
주로 캐시 메모리로 활용됨 -> SRAM
주로 주기억장치로 활용됨 ->DRAM
대용량화하기 유리합니다 -> DRAM
집적도가 상대적으로 낮습니다 -> SRAM
P205 1번
저장장치 계층 구조
캐시 메모리 |
레지스터 |
메모리 |
보조기억장치 |
혼공컴운 5주차 (동기화, deadlock) (0) | 2025.02.18 |
---|---|
혼공컴운 4주차 (프로세스와 스레드) (0) | 2025.02.17 |
동기화 (mutex, Semaphore, monitor) (0) | 2025.01.04 |
혼공컴운 2주차 (레지스터, 멀티스레딩) (0) | 2025.01.03 |
혼공컴운 1주차 컴퓨터 구조 시작하기. (cpu, opcode) (0) | 2024.12.31 |