장소 : 더플레이스, 강남구 역삼동 역삼로3길 13 건암빌딩 1층 (9AM ~ 1PM)
인원 : 목태양 외 7명
진도 : 컴퓨터 구조 및 설계 5판 (~P98)
공지사항
- 3주차 참석 여부 갱신 부탁드립니다 : https://docs.google.com/spreadsheets/d/1zWegP4Et-hGDwAB6PbD9eA3MwPmRVmDkhh_aaSkEt1c/edit#gid=0
- 3주차 이후 스터디 장소 관련 : 서울창조경제혁신센터 사용 가능한지 확인해보고, 사용 불가시 동일 장소(더 플레이스) 이용
- 엔빵을 저 포함 10명이 냈는데 스터디에는 8명만 참석하신 관계로, 스터디룸 대여비가 12천원 남았습니다. 3주차 또는 그 이후 주차에 스터디룸 대여료에 보태도록 하겠습니다.
- 스터디 시간 중 책 읽다가 얘기 나온 건에 대해서는 각자 자율적으로 자료 찾아보고 소화해서 댓글로 친절한(?) 설명 공유하기
ex1) x86 시스템 기준, 메모리에서 byte 단위 data 읽는 방법
ex2) 루프 최적화 기법 중 Loop Unwinding/Unrolling에 대한 내용
.
cf) Loop unrolling
pipeline 구조에서 branch 명령어 수행시 발생하는 cycle 손해를 줄이기 위한 loop 최적화 방법
for문은 branch 구문으로 컴파일되므로,
for (20000) func(); @ branch 2만 회
for (10000) { func(); func(); }
for (5000) { func(); func(); func(); func(); } @ branch 연산 회수 1/4로 절감 가능
ex) http://lxr.free-electrons.com/source/arch/arm/kernel/head.S
180 __create_page_tables:
181 pgtbl r4, r8 @ page table address
182
183 /*
184 * Clear the swapper page table
185 */
186 mov r0, r4
187 mov r3, #0
188 add r6, r0, #PG_DIR_SIZE
189 1: str r3, [r0], #4
190 str r3, [r0], #4
191 str r3, [r0], #4
192 str r3, [r0], #4
193 teq r0, r6
194 bne 1b
- 일반적으로 body에 4~8개 명령어를 넣음
- 반복문 body의 명령어 개수가 cache line 크기를 초과할 경우 성능 overhead 발생
- ARM920T cache spec : 16KB Icache / 16KB Dcache, 8 words per a cache line
- 구형 ARM3 core의 경우 4 words cache line을 갖는다.