A. 캐시와 CPU 파이프라인
1. 캐시
a. 캐시 기초
컴퓨터 구조 원리 : 캐시
레드 : cpu
노란색 : 메모리
전기가 아무리 빨라도 물리적으로 좀 멀어보임 (데이터 낭비)
따라서 캐시를 사용함
b. cpu의 캐시관리
레지스터는 cpu의 손발
아래 캐시들은 단기기억장치 (서빙할 때 메모장 같은 것)
c. 캐시 철학
물리적으로 모든 데이터를 가져오지 않고
잠시 기억해두는것! ==> 이것이 캐시
d. 캐시 실습
접근하는 비용이 얼마나 걸렸는지 테스트하기
버퍼를 하나 생성하고 GetTickCount64로 시간을 재고
반복문을 사용해 버퍼에 넣어주기
그럼 버퍼에는 캐시가 [a] [b] [c] [d] [e] [f] [g] [h] [i] [j] [k] 이런식으로 저장되게 되는데
위와 같은 코드지만 추가로 j,i를 바꿔서 찾는 시간이 얼마나 걸리는지 비교해보면
==> 3배씩 속도차이가 남 (캐싱을 하고있기 때문)
[a] [b] [c] [d] [e] [f] [g] [h] [i] -- 이렇게 캐싱되어있던게
a다음 f를 찾아야 하니까 시간이 늘어나게 됨
이 방법을 통해 간접적으로 캐시가 작동하고 있는구나 알 수 있음
2. 컴퓨터 구조원리 : 파이프라인
a. 파이프라인이란?
빨래를 한다고 하면 하나 끝나고 하나 하려면 너무 시간도 많이 걸림
그래도 비어있는 곳에 순차적으로 실행해야 한다
Cpu가 일할때도 마찬가지임
하나의 명령어가 4단계를 거치게 됨
1. 가져오고
2. 인지(분석)
3. 실행
4. 돌려놓기
위에서처럼 순서대로 실행될 수 있는데,
위험하게 cpu가 독립적인 명령어라고 판단하면 순서를 바꿀 수 있음
b. 실습
스레드 두개를 만들어주고
첫 번째 스레드에서는 레디에 따라 y 값이 달라지게 함
두번째도 비슷하게 진행
메인함수는 무한루프를 돌면서 카운팅
스레드 두개를 만들고
스레드를 모두 가동하면 레디를 트루
몇번 만에 빠져나오는지 보면
💥 위 스레드에서 아무리 맞춰봐도 0이 될 수가 없음
이건 cpu가 명령어를 뒤집어버려서 코드가 끝까지 실행되는 것 (멀티 스레드 환경)
근데 환경이 다양해서 꼭 무조건 이렇게 실행되는 것은 아님
이것도 운영 체제에 따라서 최적화되어 Yeah가 실행될 수 있음
위와 같이 환경에 따라서 잘못 작동할 경우가 있기 때문에 흑마법이다
상식으로 알아두면 됨!
'운영체제' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 락 기초, 스핀락, 데드락 (0) | 2024.12.03 |
---|---|
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 공유자원 (0) | 2024.12.03 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 쓰레드 (1) | 2024.12.02 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 멀티쓰레드 입문 (116강) (1) | 2024.11.18 |
[게임 프로그래머 입문 올인원] 멀티쓰레드 프로그래밍 : 서버 (115강) (1) | 2024.11.18 |