1 / 38

November. 20. 2004 권영훈 , 조태현

Computers as Components Program Design and Analysis. November. 20. 2004 권영훈 , 조태현. Outline. 1. Introduction. 2. Program design. 3. Models of Programs. 4. Assembly and linking. 5. Basic Compilation Techniques. 6. Analysis and Optimization of Execution Time.

hasana
Download Presentation

November. 20. 2004 권영훈 , 조태현

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computers as Components Program Design and Analysis November. 20. 2004 권영훈,조태현

  2. Outline • 1. Introduction • 2. Program design • 3. Models of Programs • 4. Assembly and linking • 5. Basic Compilation Techniques • 6. Analysis and Optimization of Execution Time • 7. Analysis and optimization of Energy and power • 8. Analysis and Optimization of Program size • 9. Program validation and testing • 10. Software Modem

  3. Program Design • Design patterns • 크리스토퍼 알렉산터 “각각의 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명하고, 그 문제들에 대한 해법의 핵심을 설명 하는 것이다, 이렇게 하면 똑 같은 방법을 두번 반복하지 않은 채 이 해법을 백만 번 이상 재 사용 할 수 있다.” • Gof “특정한 상항에서 일반적 설계 문제를 해결하기 위해 상호 교류하는 수정 가능한 객체와 클래스들에 대한 설명이다.” • Stage diagrams to describe behavior and Sequence diagrams to show how classes interact.(Wayne Wolf)

  4. Program Design • GoF Design Pattern • GoF의 패턴은 생성(5개), 구조(7개), 행위(11개)로 패턴들을 구분하고 있다. • 생성패턴 : 객체의 생성에 관련된 문제들에 대한 해결책을 제시한다. • 구조패턴 : 클래스나 객체의 합성과 관련된 문제들에 대한 해결책을 제시한다. • 행위패턴 : 클래스나 객체들이 상호 작용하는 방법과 책임을 분산과 관련된 문제들에 대한 해결책을 제시한다.

  5. Singleton Return uniqueInstance Static Instance() SingletonOperation() GetSingletonData() Static uniqueInstance SingletonData Program Design • GoF Design Pattern • Singleton Pattern • 클래스에서 만들 수 있는 인스턴스가 오직 하나일 경우에 이에 대한 접근은 어디에서든지 하나로만 통일 하여 제공한다.

  6. Program Design • GoF Design Pattern • Singleton Pattern 구현 • Class Singleton{ public : static Singleton *Instance(); protected : Singleton(); private: static Singleton * _instance; } • Singleton * Singleton :: _instance = 0; Singleton * singleton :: Instance () { if(_instance == 0) { _instance = new Singleton; } return _instance; }

  7. No seat/ Idle No seat/buzzer off Seat/timer on Buzzer Seated No belt and no timer Belt/buzzer off No belt/timer on Belted Program Design • Design patterns for Embedded systems • State Machine in C • Circular Buffer Implementation of an FIR Filter

  8. Program Design • Design patterns for Real-Time Embedded systems • Subsystem and Component Architecture Patterns • Layered pattern • Channel Architecture Pattern • Concurrency Patterns • Message Queuing Pattern • Interrupt Pattern • Memory Patterns • Smart Pointer Pattern • Garbage Collection Pattern • Resource Patterns • Highest Locker Pattern • Priority Ceiling Pattern • Distribution Patterns • Safety and Reliability Pattern • 기타등등

  9. Program Design • Design patterns for Real-Time Embedded systems • Watchdog Pattern

  10. c d a b e + + + a a a + + a 행위자 a 자료흐름 프로세스 Models of Programs • Data Flow Graphs w = a + b X = a – c Y = x + d X = a + c Z = y + e;

  11. cond1 Basic_block_1() Basic_block_2() Basic_block_3() test1 Basic_block_4() Basic_block_5() Basic_block_6() Models of Programs • Control/Data Flow Graphs If(cond1) basic_block_1() Else basic_block_2() Basic_block_3(); Switch(test1){ Case c1:basic_block_4();break; Case c2:basic_block_5();break; Case c2:basic_block_6();break; }

  12. Models of Programs • Real Time UML소개 • 개발 패러다임의 변화 한 단계 높은 추상개념 등장 -> 회의적 반응/비판 -> 개념실현 도구 등장 -> 도구의 최적화 -> 보편화

  13. Models of Programs • Real Time UML소개 • 개발 패러다임의 변화 구조적 개발 방법론 객체지향 개발 방법론 컴포넌트기반 개발 방법론 모델주도형 아키텍처 개발 방법론

  14. Models of Programs • 모델주도형아키텍처 모델링 언어, 정확한 모델링의 중요성

  15. Booch Rumbaugh Jacobson Fusion Meyer Operation descriptions, Message numbering Before and after conditions Embley Harel Singleton classes, High-level view State charts Gamma, et.al Wirfs-Brock Frameworks, patterns, notes Responsibilities Odell Shlaer - Mellor Classification Object Lifecycles Models of Programs • UML 2.0

  16. 현재(2004.10) 2003년 8월 최종 승인, 2004년 4월 확정 예정(계속 연기 중) 2002.3 UML 1.5 2001.9 UML 1.4 UML 2.0 UML 1.3 1999.6 Action Semantics 포함 97년 12월 OMG에 의해 승인 OCL 포함 1997.9 UML 1.1 1997.1 UML 1.0 1996.6 UML 0.9 Unified Method 0.8 Microsoft, Oracle, IBM, HP와 다른 산업 리더들 1995.10 이바 야곱슨의 래셔널 합류 (1995. 가을) OOSE(Use Case) OMT, Booch 방법론 제임스 럼바의 래셔널 합류 (1994.10) UML 방법론 전쟁시대 프로세스 전쟁시대 Models of Programs • UML 2.0

  17. Diagram Structure Diagram Behavior Diagram Activity Diagram State Machine Diagram Interaction Diagram Use Case Diagram Object Diagram Class Diagram Sequence Diagram Composite Diagram Communication Diagram Component Diagram Interaction Overview Diagram Package Diagram Deployment Diagram Timing Diagram Models of Programs • UML 2.0

  18. Models of Programs • 리얼타임 시스템과 UML 2.0 • 리얼타임 시스템 • Real-time systems are ones in which timeliness, performance, and schedulability are essential to correctness. • 일반 어플리케이션보다 더 많은 제약 존재 • 데드라인, 보안, 성능에 대한 제약 • 개발환경 열악 • 더 적은 메모리, 더 느린 속도, 시간, 공간에 대한 제약 • 존재하지 않는 하드웨어

  19. Models of Programs • 리얼타임 시스템과 UML 2.0 • 리얼타임 시스템 개발은 더 복잡하고 어렵다. 따라서 더 많은 면들에 대한 철저한 분석이 요구된다. • UML은 시스템의 구조적, 행위적, 기능적, 서비스의 품질적인 면들을 명세하고, 분석하고, 설계하고, 시뮬레이션 하고, 실행한다.

  20. Models of Programs • 리얼타임 시스템과 UML 2.0 • 고유 개발 프로세스 필요 • RUP (Rational Unified Process) • 어플리케이션 개발에서 UML을 사용하는 대표적인 개발 프로세스 • ROPES (Rapid Object-Oriented Process for Embedded Systems) • 객체지향 개념을 기반으로 하는 리얼타임 시스템 개발 프로세스 • 리얼타임 고유의 표현 기호 필요 • UML은 어플리케이션 개발을 기초로 해서 발전 • UML 2.0에서 리얼타임 부분을 보강했다고는 하지만 그래도 부족 • 독립된 프로파일 필요

  21. Models of Programs • 리얼타임 시스템과 UML 2.0 참고자료

  22. Models of Programs • 도구 • 어플리케이션 • Rational Rose, Borland Together, … • 리얼타임 • Rose RT, Rhapsody, Tau Generator2,…

  23. Models of Programs • Rose RT 소개

  24. Models of Programs • Together 소개

  25. Models of Programs • Rhapsody 소개

  26. High-level Language code Object code Assembly code Compiler Compiler Linker Execution Executable binary Loader Assembly and Linking • Assemblers and Linking

  27. High-level Language code Parsing,symbol table generation, semantic analysis Machine-independent optimizations Instruction-level optimizations And code generation Basic Compilation Techniques • 컴파일러의 내부 기능을 알아본다. • The compilation process

  28. Basic Compilation Techniques • Statement Translation a * b + 5 * (c – d) ADR r4,a ;get address for a MOV r1,[r4] ;load a ADR r4,b ;get address for b MOV r2,[r4] ;load b ADD r3,r1,r2 ;put w into r3 ADR r4,c ;get address for c MOV r4,[r4] ;load c ADR r4,d ;get address for d MOV r5,[r4] ;load d SUB r6,r4,r5 ;put x into r6 MUL r7,r6,#5 ;operator 3, puts y into r7 ADD r8,r7,r3 ;operator 4, puts z into r8 • Procedures

  29. a[0] a[0] a[0] a[0] … … a[1,0] a[1,1] … Basic Compilation Techniques • Data Structures • Expression Simplification a * b + a * c == a * (b + c)

  30. Analysis and Optimization of Execution Time • Dead Code Elimination #define DEBUG 0 … if(DEBUG) print_debug_stuff(); • Procedure Inlining 컴파일 작업의 최종산물은 기계어로 이루어진 실행 프로그램이다. 프로그램을 실행하면, 운영체제는 이명령들을 컴퓨터 메모리에 로드한다. 로드된 명령들은 각각 하나의 특정 메모리 주소를 갖는다. 그리고 컴퓨터는 이 명령들을 순차적으로 실행 한다. 일반적으로 함수를 만나면 함수가 있는 주소로 점프 하였다, 함수 처리가 끝나면 되돌아 온다. 그러나 inline 함수는 그함수 자체를 다른 코드에 삽입하는 것을 의미한다.

  31. Analysis and Optimization of Execution Time • Loop Transformations for(I=0;I<N;I++){ a[I] = b[I] * c[I]; } a[0] = b[0] * c[0]; a[1] = b[1] * c[1]; a[2] = b[2] * c[2]; a[3] = b[3] * c[3];

  32. a b c d w x y 1 2 3 Analysis and Optimization of Execution Time • Register Allocation w = a + b; x = c + w; y = c + d; a r0 b r1 c r2 d r0 w r3 x r0 y r3

  33. Analysis and Optimization of Execution Time • Scheduling • Instruction Selection • Understanding and Using Your Compiler • Interpreters and JIT Compilers • Interpreter : 파일 전체를 컴파일 하는것이 아니라, 라인 단위로 변환하면서,기계어를 바로 실행하는 것. • JIT Compilers : JIT 는 byte code가 자바가상머신에 처음 로딩시 native code로 변환한후 그주소를 v-table에 저장해 놓습니다. 그리고 그후부터는 실행시마다변환없이 native code를 바로 호출하여 사용하므로 좀더 빠른 속도를 낼 수 있다.

  34. Current Ammeter Logic + Power supply CPU - Analysis and Optimization of Energy and Power • Measuring energy consumption for a piece of code. • Program Energy Consumption and Optimization Accesses to Registers > Accesses to Cache > Accesses to Main memory

  35. compressed Instruction table Decompressed instruction Main memory Cache instruction CPU Analysis and Optimization of Program size • Dense instruction sets ARM – Thumb mode • Code compression

  36. Program Validation and Testing • Clear-Box Testing(White-Box) • 프로그램 내부의 구성을 시험 하는 것이다. • 프로그램을 수행 하지 않거나, 프로그램의 독립적인 모든 경로를 수행, 논리적인결정,순환의 경계값 조사, 내부자료 구조의 사용등을 테스트 한다.

  37. Program Validation and Testing • Black-Box Testing • 테스트 하고자 하는 소프트웨어의 내부는 고려 하지 않고, 주어진 입력에 요구되는 결과가 나오는가를 시험하는 것이다. • 프로그램과 외부와의 인터페이스에 대해서 시험이 이루어진다. • Evaluation Function Tests • Performance Testing

  38. 좋아 하는 명언 • 하나님도 여러 날 걸릴 일을 우리는 하루 걸려 하려 든다 • 우리 인생에서 가장 중요한 것은 실패의 가능성이 아니라, 시도조차 하지 않았을 때 우리가 잃게 되는 기회이다. • 배는 항구 안에 있을 때 훨씬 더 안전하다. 그러나 배는 항구에 있기 위해서 만들어진 것은 아니다.

More Related