13. Floating Point Operations

Slides:



Advertisements
Similar presentations
연천 새둥지마을 체재형 주말농장 준공식 초청장 오시는 길 주제 일시 장소 21C 경기농촌희망심기 2005년 제1기 교육수료마을
Advertisements

SPARCS Wheel Seminar Mango X Sugoi
출석수업 자료 교과서 범위: 제1장-4장.
10월 충북노회 남선교회 순회 헌신예배 묵 도 기 도 성 경 봉 독 특 송 찬 양 설 교 찬양 / 봉헌 봉 헌 기 도
글에 나타난 시대적 사회적 배경을 파악할 수 있다. 배경 지식과 의미 해석의 관련성을 이해할 수 있다.
패널자료 분석
라오디게아 교회의 교훈 본문 계 3: ○라오디게아 교회의 사자에게 편지하라 아멘이시요 충성되고 참된 증인이시요 하나님의 창조의 근본이신 이가 이르시되 15. 내가 네 행위를 아노니 네가 차지도 아니하고 뜨겁지도 아니하도다 네가 차든지 뜨겁든지 하기를 원하노라.
한알Ⅱ「더불어 살기」전국대회 일정표 날짜 시간 7월 26일(목) 7월 27일(금) 7월 28일(토) 7월 29일(일)
2013학년도 전라북도고등학교신입생 입학전형 기본계획
선거관리위원회 위원 공개모집 4차 공고 제4기 선거관리위원회를 구성하는 위원 모집의
2015학년도 1학기 버디 프로그램 오리엔테이션 (목) 16:00.
열왕기하 1장을 읽고 묵상으로 예배를 준비합시다..
오늘의 학습 주제 Ⅱ. 근대 사회의 전개 4. 개항 이후의 경제와 사회 4-1. 열강의 경제 침탈 4-2. 경제적 구국 운동의 전개 4-3. 사회 구조와 의식의 변화 4-4. 생활 모습의 변화.
전도축제 계획서 *일시 : 2013년 4월 21, 28일 주일 (연속 2주)
2009학년도 가톨릭대학교 입학안내.
한국 상속세 및 증여세 과세제도 한국 국세공무원교육원 교 수 최 성 일.
중세시대의 의복 학번 & 이름.
다문화가정의 가정폭력의 문제점 연세대학교 행정대학원 정치행정리더십 2학기 학번 이름 홍 진옥.
이공계의 현실과 미래 제조업 立國 / 이공계 대학생의 미래 준비
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
신앙의 기초를 세우는 중고등부 1부 대 예 배 : 11 : 00 ~ 12 : 층 본당
◆ 지난주 반별 출석 보기 ◆ 제 56 권 26호 년 6월 26일 반 선생님 친구들 재적 출석 5세 화평 김성희 선생님
第1篇 자치입법 개론.
교직원 성희롱·성폭력·성매매 예방교육 벌교중앙초등학교 박명희
제5장 새로운 거버넌스와 사회복지정책 사회복지정책이 어떤 행위자에 의해 형성되고 집행되는지, 어떤 과정에서 그러한 일들이 이루어지는지, 효과적인 정책을 위해서는 어떤 일들이 필요한지 등을 본 장에서 알아본다 개인들이 생활을 개선하는 가장 효과적인고 궁극적인 방법은 개별적.
임상시험 규정 (최근 변경 사항 중심으로) -QCRC 보수 교육 과정 전달 교육
서울특별시 특별사법경찰 수사 송치서류 유의사항 서울특별시 특별사법경찰과 북부수사팀장 안   진.
특수학교용 아동학대! 제대로 알고 대처합시다..
사회복지현장의 이해 Generalist Social Worker 사회복지입문자기초과정 반포종합사회복지관 김한욱 관장
학교보건 운영의 실제 한천초등학교 이 채 금.
제 출 문 고용노동부 귀중 본 보고서를 ’ ~ ‘ 까지 실시한 “근로감독관 직무분석 및 교육프로그램 개발에 관한 연구”의 최종보고서로 제출합니다  연구기관 : 중앙경영연구소  프로젝트 총괄책임자 : 고병인 대표.
학습센터란? 기도에 관해 배울 수 있는 다양한 학습 코너를 통하여 어린이들이 보다 더 쉽게 기도를 알게 하고, 기도할 수 있게 하며, 기도의 사람으로 변화될 수 있도록 하는 체험학습 프로그램이다. 따라서 주입식이지 않으며 어린이들이 참여할 수 있는 역동적인 프로그램으로.
Digital BibleⅢ 폰속의 성경 디지털 바이블 2008년 12월 ㈜씨엔커뮤니케이션 ㈜씨엔엠브이엔오.
후에 70인역(LXX)을 좇아 영어 성경은 본서의 중심 주제인 “엑소도스”(출애굽기)라 하였다.
성 김대건 피츠버그 한인 성당 그리스도왕 대축일 공지사항
예배에 대하여.
말씀 듣는 시간입니다..
하나님은 영이시니 예배하는 자가 신령과 진정으로 예배할지니라.
지금 나에게 주신 레마인 말씀 히브리서 13장 8절.
예수의 제자들 담당교수 : 김동욱.
Lecture Part IV: Ecclesiology
KAINOS 날마다 더하여지는 Kainos News 이번 주 찬양 20 / 300 – 20개의 셀, 300명의 영혼
예배의 외부적인 틀II - 예배 음악 조광현.
영성기도회 렉시오 디비나와 묵상기도 2.
성인 1부 성경 공부 지도목사: 신정우 목사 부 장: 오중환 집사 2010년. 5월 9일
남북 탑승객 150명을 태운 디젤기관차가 2007년 5월 17일 오전 경의선 철길을 따라 남측 최북단 역인 도라산역 인근 통문을 통과하고 있다. /문산=사진공동취재단.
성경 암송 대회 한일교회 고등부 (일).
천주교 의정부교구 주엽동본당 사목협의회 사목활동 보고서
III. 노동조합과 경영자조직 노동조합의 이데올로기, 역할 및 기능 노동조합의 조직형태 노동조합의 설립과 운영
여수시 MICE 산업 활성화 전략 ( 중간보고 )
1. 단위사업 관리, 예산관리 사업설정 (교직원협의/의견수렴) 정책 사업 학교 정책 사업 등록 사업 기본정보 목표 설정
※과정 수료자에 한하여 수강료의 80~100% 차등 환급함
평생학습중심대학 프로그램 수강지원서 접수안내 오시는 길 관악구&구로구민을 위한 서울대학교 -- 접수 일정 및 방법 안내--
서비스산업의 선진화, 무엇이 필요한가? 김 주 훈 한 국 개 발 연 구 원.
기존에 없던 창업을 하고 싶은데, 누구의 도움을 받아야 할지 모르겠어요
전시회 개요 Ⅰ. 전시명칭 개최기간 개최장소 개최규모 주 최 참 관 객 현 지 파 트 너 General Information
Homeplus 일 家 양 득 프로그램 소개 2015년 12월.
Home Network 유동관.
통신이론 제 1 장 : 신호의 표현 2015 (1학기).
I. 기업과 혁신.
Chapter 4 – 프로그래밍 언어의 구문과 구현 기법

ESOCOM – IPIX 고정IP서비스 제안서 Proposer ㈜이소컴.
화장품 CGMP 한국콜마㈜.
초화류 종자 시장 규모 100억원 이상(추정, 생산액의 10%정도 차지)
COMPUTER ARCHITECTIRE
[ 한옥 실측 ] 1. 약실측 2. 정밀실측 조선건축사사무소.
14. 컴파일러 자동화 도구 스캐너 생성기 파서 생성기 코드 생성의 자동화
A제조용수/B환경관리/C시설관리 ㈜ 에이플러스 코리아
Introduction to Network Security
Presentation transcript:

13. Floating Point Operations RTLAB 전영준

About floating point data Cortex-M4 floating point unit ( FPU ) 목차 About floating point data Cortex-M4 floating point unit ( FPU ) Lazy stacking in detail Using the floating point unit Floating point exception

1. About floating point data In C programming, you can define data as floating point values. For example, a value can be declared as single precision: float pi = 3.141592F; double precision: double pi = 3.1415926535897932384626433832795;

1. About floating point data 1. 0 0111 1111 000 0000 0000 0000 0000 0000 2. 0 0111 1111 100 0000 0000 0000 0000 0000 3. 0 0111 1111 110 0000 0000 0000 0000 0000 4. 0 0111 1010 010 0011 1101 0111 0000 1010 5. 1 1000 0001 001 1000 0000 0000 0000 0000

1. About floating point data : Normalized number format ( exponent의 범위 : -126~127 ) single-precision Floating point 연산의 경우 수의 값을 1.0에서 2.0사이의 값으로 정규화해야 한다. 만약 exponent의 값이 0인 경우 1) +0은 sign과 fraction이 모두 0이어야 한다. 2) -0은 sign은 1, fraction은 0이어야 한다. 3) fraction이 0이 아니라면, denormalized value가 된다. normalized number 라는 것은 뭘까요?    앞 문제에서 설명했듯이 가수가 지켜야 할 규칙 (norm) 이 있었죠.    그 규칙을 따르는 수를 normalized number 라고 합니다.    즉, 규칙에 맞게 변형된 수라는 것이죠.

1. About floating point data : Denormalized number format 가장 작은 normalized number = 2^(-126), 두번째로 작은 normalized number = 2^(-126)+2^(-23)*2^(-126) ( 0 0000 0001 000 0000 0000 0000 0000 0000 ) 0과 가장 작은 수와 두번째로 작은 수의 gap이 너무 크기에 0과 2^(-126) 사이의 수를 표현할 수 있는 값 표현 1) exponential bits = 0000 0000 ( = -126 ) 2) fraction bits 존재 3) implicit leading 1이 존재하지 않음 Denormalized number 는 우리말로 옮기면 비정규수 정도로 번역할 수 있습니다.    IEEE-754 에서는 이 용어 대신에 subnormal number 라는 말을 사용합니다.    즉, 정규수 아래에 있는 수라는 말이죠.

1. About floating point data : Denormalized number format 만약 expnent 값이 0xFF인 경우 1) Fraction == 0, Sign == 0 -> infinity ( +∞ ) 2) Fraction == 0, Sign == 1 -> infinity ( - ∞ ) 3) Fraction ≠0 →𝑁𝐴𝑁 ( Not a Number ) NaN 1) Signaling NaN : Fraction의 bit 22개가 0일 경우 2) quiet NaN : Fraction의 bit 22개가 1일 경우 3) QNaNs은 대부분의 산술 연산에서 예외를 signaling 하지 않은 채로 스며들게 (propagate) 할 수 있다. : 디버깅 속도 향상 시 4) SNaNs은 일반적으로, 산술 연산에서 연산자 사용될 때마다 발생하는 invalid operation 예외 시그널이다. : 초기화되지 않은 (실수) 배열 요소 참조 Denormalized number 는 우리말로 옮기면 비정규수 정도로 번역할 수 있습니다.    IEEE-754 에서는 이 용어 대신에 subnormal number 라는 말을 사용합니다.    즉, 정규수 아래에 있는 수라는 말이죠.

1. About floating point data : Half-precision floating point numbers

1. About floating point data : Double-precision floating point numbers

2. Cortex-M4 floating point unit ( FPU ) M4에서는 single-precision floating point를 할 수 있는 option이 포함 -> single-precision floating point operation을 빠르게 계산하도록 ARMv7-M Architecture에서 floating point 연산은 IEEE Std 754-2008, IEEE Standard for Binary Floating Point Arithmetic을 따른다. Cortex-M4의 FPU는 선택적으로 사용가능하며, Single precision floating point를 지원하고, conversion 및 memory access function 을 지원한다. 아래의 것들은 지원하지 않는다. 1) Double-precision data calculations 2) Floating point 나누기 (e.g., z ¼ fmod (x, y)) 3) 부동소수점 수를 정수 값으로 반올림 4) 2진수 <-> 10진수 변환 5) single-precision과 double-precision간의 직접적 비교

2. Cortex-M4 floating point unit ( FPU ) Floating point register bank : 32-bit register or 16 double-word register Conversion instruction 1) integer <-> single-precision floating point 2) fixed point <-> single-precision floating point 3) half precision <-> single-precision floating point Data transfers of single-precision and double-word data between floating point register bank and memory Data transfer of single-precision between floating point register bank and integer register bank

2. Cortex-M4 floating point unit ( FPU ) FPU는 co-processor로 간주된다. Normal processing pipeline과 floating point unit은 같은 instruction fetch stage를 공유하지만 그림 13.11과 같이 insturction decode 및 excution stages는 별개이다. Floating point operation/transfers의 경우 floating point instruction 사용 명령어 페치첫 번째 단계인 명령어 페치 단계를 페치 사이클(fetch cycle)로 부른다. 이 단계는 각 명령에 동일한 작업을 수행한다. 페치 사이클은 opcode를 포함하는 명령어(instruction word)로부터 명령(instruction)을 처리한다. 명령어 디코딩두 번째 단계는 디코딩으로 부른다. 메모리로부터 페치된 opcode는 다음 단계를 위해 디코딩되며 적절한 레지스터로 이동된다. 유효한 주소 읽기세 번째 단계인 유효한 주소 읽기는 어떠한 명령인지를 결정하는 단계이다. 이것이 메모리 명령이라면 이 컴퓨터 단계에서 직접 메모리 명령인지 간접 메모리 명령인지를 확인한다: 직접 메모리 명령 - 아무 것도 처리하지 않는다. 간접 메모리 명령 - 유효 주소를 메모리로부터 읽어들인다. 이것이 입출력 명령이나 레지스터 명령이라면 컴퓨터는 이에 대한 종류를 확인하고 명령을 실행한다. 명령 실행네 번째 단계는 실행 사이클이다. 이 단계는 각 명령에 따라 변동된다.실행 사이클의 첫 번째 단계는 프로세스-메모리(Process-Memory)이다. 데이터는 CPU와 입출력 모듈 사이를 오고간다.그 다음 단계는 데이터-프로세싱(Data-Processing)이며 데이터 참조에서 논리 명령뿐 아니라 수치 명령도 이용한다. 그 다음 단계는 중심 변경(Central alteration)으로, 점프(jump) 명령과 같은 명령의 연속이다. 마지막 단계는 다른 모든 단계에서 나온 모든 명령을 아우른다.

2. Cortex-M4 floating point unit ( FPU ) : Floating point registers overview CPACR (Co-processor Access Control Register) in SCB (System Control Block) Floating point register bank Floating point Status and Control Register (FPSCR) Additional registers in the FPU for floating point operations and control, as shown in Table 13.2.

CPACR (Co-processor Access Control Register) register 2. Cortex-M4 floating point unit ( FPU ) : Floating point registers overview CPACR (Co-processor Access Control Register) register The CPACR register allows you to enable or disable the FPU located in address 0xE000ED88 and can be accessed as “SCB->CPACR” in CMSIS-Core. Bit 0 to bit 19 and bit 24 to bit 31 are not implemented and are reserved FPU is defined as co-processor 10 and 11. only CP10 and CP11 are available and both are for the FPU. SCB->CPACRj= 0x00F00000; // Enable the floating point unit for full access

Floating point register bank 2. Cortex-M4 floating point unit ( FPU ) : Floating point registers overview Floating point register bank Caller saved register : A가 B를 호출할 때 A의 register 정보를 저장해 두는 stack ( 마음대로 사용할 수 있는 레지스터 ) Calle saved register : A가 B를 호출할 때 B가 16개 이상의 register를 계산에 사용하는 경우 저장하는 부분 A함수로 돌아가기 전에 복원을 해야만 함. ( 마음대로 사용되는 레지스터 )

Floating point status and control register (FPSCR) 2. Cortex-M4 floating point unit ( FPU ) : Floating point registers overview Floating point status and control register (FPSCR) FPSCR은 arithmetic result flags 및 sticky status flags 뿐만 아니라 부동 소수점 장치의 동작을 제어하는 ​​bit fields. the sticky bit is a user ownership access right flag that can be assigned to files and directories on Unix-like systems. 컴퓨팅에서 스티키 비트는 유닉스 계열 시스템의 파일과 디렉토리에 할당 할 수있는 사용자 소유권 액세스 권한 플래그입니다.

3. Lazy stacking in detail Key elements of the lazy stacking feature Lazy stacking이 없으면, 모든 exception에 요구되는 시간이 29 cycles로 증가 Default lazy stacking feature을 enable하면 필요한 모든 작업이 하드웨어에 의해 자동으로 관리되므로 예외처리 중에 레지스터 설정이 필요가 없음 CONTROL register안의 FPCA bit 1) Processor가 floating point instruction을 실행하면 1으로 설정 2) exception handler 시작 시 0으로 clear 3) exception return 시 EXC_RETURN의 4번째 bit를 inverse 4) reset 후에 0으로 clear EXC_RETURN Key elements 핵심요소 Lazy stacking -> 인터럽트 지연시간을 줄이기 위한 메커니즘 ( interrupt latency ) Interrupt된 task가 floating point context가 있는 경우(FPCA가 1) exception entry에서 0으로 설정이 된다. (contains R0eR3, R12, LR, Return Address, xPSR, S0eS15, FPSCR) Stack frame이 짧을 경우 1로 설정 (contains R0eR3, R12, LR, Return Address, xPSR)

3. Lazy stacking in detail LSPACT bit in FPCCR Processor가 exception handler에 진입해있고, lazy stacking이 enable 상태이며 interrupt task가 floating point context를 가질 경우 ( FPCA가 1 ), 더 긴 stack frame이 사용되어지고 LSPACT는 1로 set 된다. 이 때 float point 연산이 지연되고 FPCAR로 표시된 stack frame 공간이 할당된다. LSPACT가 1일 동안 Floating point 연산을 실행하면 processor는 pipeline을 정지하고 floating point register의 stacking을 시작한다. LSPACT가 0으로 Clear된 상태에서 재 수행 되면 floating point register stacking으로 인한 지연이 없다는 것을 나타낸다. Key elements 핵심요소 Lazy stacking -> 인터럽트 지연시간을 줄이기 위한 메커니즘 ( interrupt latency )

3. Lazy stacking in detail No floating point context in interrupted task Lazy stacking -> 인터럽트 지연시간을 줄이기 위한 메커니즘 ( interrupt latency )

3. Lazy stacking in detail Floating point context in interrupted task but not in ISR 인터럽트 이전에 부동 소수점 컨텍스트가있는 경우 FPCA는 1이고 스택 프레임의 긴 버전이 사용됩니다 (그림 13.20). 그러나 스택 프레임에는 S0eS15 및 FPSCR에 대한 공간이 포함되며 이러한 레지스터의 값은 스택으로 푸시되지 않습니다. LSPACT는 1로 설정되어 부동 소수점 레지스터의 스택이 지연됨을 나타냅니다. 예외 복귀시, 프로세서는 EXC_RETURN [4]가 0 (긴 스택 프레임)이지만 LSPACT가 1이며 부동 소수점 레지스터가 스택에 푸시되지 않았 음을 나타냅니다. 따라서 S0eS15 및 FPSCR의 언 스태킹은 수행되지 않고 변경되지 않습니다.

3. Lazy stacking in detail Floating point context in interrupted task and in ISR

3. Lazy stacking in detail Nested interrupt with floating point context in the second handler

3. Lazy stacking in detail Nested interrupt with floating point context in the both handlers

4. Using the floating point unit Floating point support in CMSIS-Core FPU_USED가 1로 set되면, reset handler가 실행될 때마다 SystemInit() 함수가 FPU를 enable 된다.

4. Using the floating point unit Floating point programming in C 대부분의 프로그램에서는 single-precision floating point이면 충분하다. Double-precision을 사용하게 되면 코드가 커지고 Cortex-M4의 경우에는 이를 지원하지 않아서 run-time library function을 사용해야 한다. 하지만 대부분의 프로그래머의 경우 실수로 double-precision floating point를 사용한다.

4. Using the floating point unit Compiler command line options ARM DS-5 or the older RealView Development Suite (RVDS) 사용자 gcc 사용자

4. Using the floating point unit ABI Options: Hard-vfp and Soft-vfp

4. Using the floating point unit ABI Options: Hard-vfp and Soft-vfp

4. Using the floating point unit Special FPU modes Flush-to-Zero Mode Default NaN mode Alternate half-precision mode Rounding modes

5. Floating point exception

5. Floating point exception

Thank you for listening!