이번 포스트에서는 MMU를 어떻게 설계하는지에 대해 다뤄보려고 한다. MMU의 동작에 있어서 주요한 역할을 하는 변수는 크게 P, V, M으로 볼 수 있다. P는 virtual address, physical address에서 해당 page map의 index를 가리키는 offset을 구성하는 address의 bit 수이다. V는 virtual page number로 쓰이는 bit수이고, M은 physical page number로 쓰이는 bit 수이다. 아마 지난 포스트에서도 봤었겠지만, 이 P, V, M을 이용해서 page의 크기를 구할 수도 있고, 또는 page의 갯수도 도출할 수 있다. 위 변수로 구할 수 있는 정보는 다음과 같다. 보통 CPU를 고를 때 32bit니, 64bit니 하고 구분을 지..
이런 상황을 가정해보자. 현재 상황은 CPU가 Page map상의 virtual page 5번에 접근하려고 하고 있다. 그런데 현재 해당 entry의 resident bit은 0이다. 즉, 이 virtual page가 찾고자 하는 데이터는 physical memory에 없다는 뜻이다. 이런 경우에 이전 포스트에서 소개했던 것처럼 MMU는 CPU에게 exception signal을 보내고, CPU는 context switching이 발생하면서 exception handler를 수행하게 된다. 이 전체 과정을 page fault라고 언급했었다. 우선 그때도 소개했지만 page fault가 발생하면 page fault handler는 disk로부터 읽어올 데이터를 저장할 공간을 physical memory로부..
Demand Paging의 전제는 Virtual Page들이 HDD 같은 secondary storage에 있고, MMU가 비어 있는 것에서부터 출발한다. 즉, physical memory에는 Page와 관련한 정보가 없는 것부터 출발하는 것이다. 이 상태에서 CPU가 프로그램을 구동하기 시작하면, CPU내에서 사용되는 virtual address는 실제 해당 프로그램이 올라가 있는 memory의 physical address로 맵핑된다. 만약 해당 address로 접근했을 때, 원하는 내용이 physical memory에 있는 경우는 그냥 그 정보를 CPU가 사용함으로써 처리가 종료된다. 그런데 만약 그 정보가 없는 경우면 어떻게 될까? 이렇게 virtual address가 가리킨 주소가 physica..
요새 kickstarter나 indiegogo같은 플랫폼을 통해서 작은 스타트업들도 일반인들로부터 지원을 쉽게 받을 수 있다. 우리나라도 텀블벅과 같이 크라우드펀딩을 해주는 플랫폼이 있긴 하지만, 거기 나오는 상품이나 프로젝트가 대체로 조그맣다. 아무튼.. 이번 포스트를 통해서 그동안 kickstarter나 indiegogo를 통해서 어떤 프로젝트들을 지원했는지 잠깐 소개해보고자 한다. 참고로 indiegogo와 kickstarter는 뭔가 비슷하면서도 다른 부분이 조금있다. 개인적으로는 kickstarter에 올라오는 프로젝트들이 더 신뢰성이 있는 것같지만... 아무튼 둘다 crowdfunding의 형태는 비슷하나 일반 소비자가 결제할때는 차이가 있다. 우선 indiegogo는 결제하자마자 비용이 바로..
System내의 Memory상에서 쓰이는 address는 크게 두가지가 있다. CPU는 Virtual Address, Memory는 Physical Address를 사용하는데, 실제로 데이터를 가지고 있는 주체인 Memory 관점에서 보면 실제로 저장되는 공간을 물리적으로 표현하는 것이고, CPU는 이 주소를 간접적으로 표현하기 위해 이렇게 구분 지은것으로 이해하면 좋을 거 같다. 아무튼 CPU와 Main Memory 사이의 주소 체계가 다르기 때문에 이를 중간에서 변환할 요소가 필요한데 이걸 Memory Management Unit (MMU)라고 한다. 물론 위 그림에서 CPU와 MMU 사이에는 SRAM으로 구성된 cache도 포함되어 있어야 하겠지만, 여기서는 생략되었다. 그럼 이 MMU가 addre..
(* 이 포스트는 MIT에서 제공되는 Computation Structures 3의 강좌를 요약한 내용이다.) Memory의 가장 큰 목표는 적당한 capacity를 가지면서 빠른 Access time을 가지는 것이다. 하지만 locality라는 특성때문에 capacity가 커지면 커질수록 해당 영역에 대한 Access time은 커질 수밖에 없다. 이를 해결하기 위해서 대부분의 CPU는 몇가지 단계로 나눠진 Cache level을 가진다. Access time을 보면 알겠지만 level이 낮을수록 용량이 낮지만 그만큼 CPU에 가깝기 때문에 Access time에서 이점을 가져올 수 있고, level이 높을수록 access time이 높아지면서 더 많은 데이터를 가질 수 있게 된다. Cache의 역할은..
이전에 Kickstarter를 통해서 Lattepanda를 산 이야기를 잠깐 했었다. 2016/05/22 - [About Things] - [Thing] Lattepanda Enhanced version unboxing 그때는 분명히 다 조립도 하고 정상적으로 부팅을 해서 잘된줄 알았는데, 윈도우 실행시 너무 느렸다. 포럼도 열심히 찾아보니까 이게 일종의 쓰로틀링이 걸려서 시스템이 느려지는 현상이라고 한다. 부연 설명을 하자면, 쓰로틀링(Throttling)이란 컴퓨터에 문제가 발생해 시스템 자체의 frequency를 강제로 낮추는 형상을 말한다. 컴퓨터 구동시 필요한 에너지는 보통 공급되는 전압과 frequency의 곱으로 표현이 되는데, 이게 컴퓨터한테 전부 공급되면 가장 이상적인 동작이 된다. 그런..
지난 포스트에서 floating point 연산이 결국 libc library와 상관이 있고, application과 libc가 제대로 연결되지 않아 오류를 출력되는 것까지 확인했다. 결국 원인을 찾았으니 이제 그걸 해결하려면 libc를 다시 build를 해서 넣는 수밖에 없다는 결론에 도달했다. 그런데 여러 문제가 있었다. 사실 위 문제를 해결하는 가장 쉬운 방법은 prebuilt된 libc를 쓰면 되는 건데, 아무리 찾아봐도 soft-float을 위한 prebuilt 이미지가 하나도 없었다. 어디에선 codesourcery에서 배포하는 toolchain을 쓰면 된다길래, 가입하고 build해봐도 안되고.. 마침 server에서 지원하는 gcc cross compiler에도 버그가 있어서 libc가 제..
- Total
- Today
- Yesterday
- Kinect
- arduino
- processing
- 딥러닝
- Kinect SDK
- Off-policy
- Python
- Gan
- Policy Gradient
- Windows Phone 7
- 강화학습
- Variance
- windows 8
- 파이썬
- DepthStream
- TensorFlow Lite
- Expression Blend 4
- Distribution
- dynamic programming
- RL
- Kinect for windows
- PowerPoint
- reward
- SketchFlow
- 한빛미디어
- Offline RL
- ColorStream
- Pipeline
- bias
- End-To-End
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |