편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 - 4 는 정렬된 메모리 블럭을 Win32 API(CopyMemory), DtCopyMemory, DtCopyMemoryMacro, 일반 복사 이렇게 네 가지 방법으로 복사를 한 후 각 방법별 소요 클럭 수를 출력한다. DummyCopy.cpp 각 함수들을 테스트하기 위한 메인 코드(정렬된 주소) .... 생략 .... void CopyTest (int iMaxLength) { .... 생략 .... char *pSrc = new char [iMaxLength] ; // 정렬된 주소 char *pDest = new char [iMaxLength] ; .... 생략 .... // 일반적인 char 단위의 복사(Normal) DtGetClo..
편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 - 3 버스트 모드 버 스트 모드(burst mode)란 한 마디로 블럭 단위로 된 일정량의 데이터를 전송 완료 시점까지 중단 없이 고속으로 전송하는 방식을 말한다. CPU와 노스 브릿지 그리고 메모리 사이에서 일어나는 버스트 모드는 메모리의 시작번지와 요구하는 데이터 블럭의 크기를 명시하면 전송 완료 때까지 중단 없이 데이터를 고속으로 전송하는 방식이다. 즉, 메모리로부터 데이터를 요구할 때마다 그 데이터의 주소를 전달하지 않는다는 말이다(). 는 일반적인 데이터 읽기이다. 일반적으로 데이터를 읽기 위해서는 데이터를 읽을 위치 즉 메모리 주소를 알려주면 그 메모리에서 데이터를 받을 수 있다. 버스트 모드는 어떻게 차이가 날까. 버스트 모드를 살펴보자..
편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 - 2 데이터 흐름에 의한 최적화 언 젠가 컴퓨터를 연구하는 개발자들이 컴퓨터의 동작에서 제일 높은 빈도로 사용되는 동작(operation)이 어떤 것인 지를 확인해 본적이 있다 한다. 그로 인해 컴퓨터에서 제일 많이 하는 동작은 데이터 이동이라는 것을 알게 되었고, 이것으로 인해 RISC 프로세서와 같은 것이 생겨났다. 이 뜻은 데이터 흐름을 최적화하는 것이 컴퓨터 동작의 많은 부분을 최적화시켰다는 것과 같은 말이 된다. 여기서는 데이터 흐름을 최적화하는 방법을 구체적으로 생각해보자. 주소 정렬의 필요성 486 까지는 CPU와 메모리간 데이터 라인이 32비트였기 때문에 데이터를 4바이트씩 읽어왔다. CPU의 속도가 빨라지면서 버스의 속도가 CPU의 ..
편견이 깨지는 어셈블리 프로그래밍 : 최적화 강좌 2 - 1 멀티미디어는 나날이 고급화되는 사용자의 요구에 맞춰 고품질화되고 있다. 고급화된 멀티미디어 데이터로 인해 컴퓨터는 더욱 많은 데이터 처리량을 요구받게 되었고, 이로 인해 CPU와 버스는 많은 성능 향상이 이뤄졌다. 지난 호에서는 CPU에 대해 알아보았다. 이번 호에서는 데이터 흐름을 주관하는 버스의 운용을 이해하고 이를 이용한 최적화의 가능성을 엿보도록 하자. 버 스(bus)는 우리가 일반적으로 생각해 볼 때 무언가를 이동한다는 의미를 가지고 있음을 미리 짐작할 수 있다. 그럼 무엇을 이동하는 것인가. 키보드로 글을 입력하거나 마우스로 컴퓨터에 어떠한 명령을 내린다. 또한 CD-ROM에 미디어를 넣어 데이터를 검색하기도 하고 음악을 듣기도 한다..
- Total
- Today
- Yesterday
- win32
- 막장로그
- 야마꼬툰
- medical
- 짤방 및 아이콘
- diary
- wallpaper
- Information Processor
- Battle
- Reverse Engineering
- Mabinogi
- Network Inspector
- 나비효과
- C#
- console
- Assembly
- 3D Engine
- Web Programming
- 프리랜서로 살아남는 법
- Tech News
- humor
- Military
- WDB
- BadCode
- USB Lecture
- network
- Linux
- Life News
- cartoon
- Embedded System
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |