꿈소년의 개발 이야기

멀티코어 임베디드 기반 고급 자료 구조 및 알고리즘, 병렬처리 및 최적화 본문

Software Engineering

멀티코어 임베디드 기반 고급 자료 구조 및 알고리즘, 병렬처리 및 최적화

꿈소년 2012. 9. 16. 00:21
반응형

1. 운영체제 , 메모리 포팅, 코딩 컨벤션

 - 3가지 OS 환경에 따른 메모리 구조

펌웨어, RTOS, GPOS 환경의 차이 이해 및 메모리 구조의 이해, 가상 메모리의 이해, 스택 프레임 이해, 컴파일러 설계 시 함수 매개인자 처리 표준(ATPCS)

 - coff , ELF , PE 파일 시스템의 이해와 섹션 개념

집단 수행 프로젝트 위한 type qualifiers 와 스토리지 클래스, 임베디드 시스템을 위한 실행 파일 내부 구조와 섹션

 - 메모리 포팅의 실제

임베디드 환경 구축의 결과물인 다양한 운영체제 환경의 포팅 코드 사례연구, 부트로더, 펌웨어 RTOS, 임베디드 리눅스, WinCE, Android 가상 메모리 포팅 코드 사례 


2. 고급 자료 구조 및 알고리즘

 - C Code Complete : 코딩 컨벤션

자체 정의 문법 적용 오류 최적화, 실무에서 사용중인 코딩 컨벤션과 문법 구조, 코딩 최적화 스킬 향상, 함수 일반화, 재귀 호출의 비재귀 호출로의 전환.

 - list 일반화, hash

list_head 의 구조 사용법, 매크로를 이용한 일반화된 리스트 기법, 일반화된 리스트 구현, Hash 자료구조 분석 및 구현.

 - rbtree

RB 트리의 회전 기법, RB 트리 구현, RB 트리 활용 기법

 - 데이터 압축

Run Length 압축 기법, Lempel-Ziv Encoding, 허프만 코드를 이용한 압축기법

 - 암호학

고전 암호의 원리 및 공격 방법, DES 암호화 알고리즘, RSA 암호화 알고리즘, MD5/SHA hash 알고리즘.


3. 코드 최적화

 - 임베디드 환경과 시간 측정

ARM 환경 / 리눅스 환경 / 안드로이드 환경 에서의 시간 측정.

 - 코드 최적화

구조체의 비밀, 컴파일러 최적화와 코드 최적화, 포인터 활용을 통한 최적화, 임베디드 환경을 위한 변수 선택법, 함수 일반화와 라이브러리, 루프 최적화 기법과 최적화를 부르는 표현, 컴파일러 최적화와 ARM 환경의 최적화

 - 포인터 배열과 배열 포인터를 조합한 익셉션, 인터럽트, 시스템 콜, 드라이버 호출 구조의 이해

임베디드 시스템 개발의 꽃인 포팅 작업을 위하여 익셉션 호출 구조, 인터럽트 호출 구조, 시스템 콜 호출 구조, 드라이버 로딩 등에 적용되는 배열 포인터를 활용하여, 포인터 배열을 자유자재로 2차원 포인터 구조를 이해

임베디드 환경에서의 포인터의 종류별 선언의 완벽 이해

정말 쉬운 설명을 통한 복잡한 포인터 선언의 완벽 이해

펌웨어, RTOS, 리눅스 환경 실전 코드를 통한 익셉션, 인터럽트, 시스템 콜, 드라이버 호출 구조의 이해.


4. 멀티 코어

 - 멀티 코어 시대

싱글코어의 한계 : 에너지 장벽, ILP의 한계

병렬 컴퓨터의 개념 및 구조

멀티코어의 구성 방식

멀티코어의 한계 : 메모리 장벽과 병렬 프로그래밍

여전히 중요한 싱글 코어의 성능

 - 고성능 프로세서의 필수 조건 : Smart 캐시

CPU 캐시의 기본적인 설계

고성능 캐시를 위한 알고리즘

멀티코어에서의 캐시

 - 병렬 프로그래밍

미래의 병렬 프로그래밍 방법론

OpenMP

CUDA


'Software Engineering' 카테고리의 다른 글

파일 위치 검색 명령어  (0) 2013.03.21
Eclipse - Memory manage by eclipse.ini  (0) 2012.11.19
[tar] tar 사용법  (0) 2012.08.01
strncpy, strncat, snprintf  (0) 2012.05.31
Java SIGBUS Error..  (0) 2012.05.15