Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
F
fx_s1615
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RealCoding2_Team1
fx_s1615
Commits
5b206787
Commit
5b206787
authored
4 years ago
by
최형택
Browse files
Options
Downloads
Patches
Plain Diff
Update TOC to resolve broken links.
parent
ce3ed85e
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+26
-27
26 additions, 27 deletions
README.md
with
26 additions
and
27 deletions
README.md
+
26
−
27
View file @
5b206787
...
...
@@ -25,25 +25,27 @@ Sign bit를 포함한 fixed point number의 arithmetic 구현
+
[
Functions
](
#functions
)
*
[
Makefile
](
#makefile
)
*
[
gcc -O flag
](
#gcc--o-flag
)
+
[
-O 옵션별 세부 사항
](
#-o----------
)
+
[
최적화 성능 비교
](
#---------
)
-
[
결과
](
#--
)
-
[
원인 분석
](
#-----
)
-
[
gprof 사용법
](
#gprof----
)
+
[
-O flag options
](
#-o-flag-options
)
+
[
Optimization Results
](
#optimization-results
)
-
[
Theoretical Background
](
#theoretical-background
)
-
[
gprof
](
#gprof
)
*
[
Project2
](
#project2
)
+
[
Macros
](
#macros-1
)
+
[
Functions
](
#functions-1
)
*
[
정확도 테스트
](
#-------
)
*
[
속도 테스트
](
#------
)
*
[
Precision Tests
](
#precision-tests
)
*
[
Performance Speed Tests
](
#performance-speed-tests
)
*
[
Sine
](
#sine
)
+
[
s
ine
t
able
](
#sine-table
)
+
[
S
ine
T
able
](
#sine-table
)
+
[
fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle) function에 대하여...
](
#fx-s1615-sine-fx-s1615-longlong-fx-s1615-angle--function-----
)
*
[
double vs long long
](
#double-vs-long-long
)
-
[
0819 과제
](
#0819---
)
*
[
요구사항 명세
](
#-------
)
*
[
코딩 규칙 검사(MISRA-C 2012)
](
#---------misra-2012-
)
*
[
검사 결과 리포트
](
#---------
)
-
[
0820 과제
](
#0820---
)
-
[
0819 Assignment
](
#0819-assignment
)
*
[
Requirements Specification
](
#requirements-specification
)
*
[
MISRA-C 2012 Conformity Test
](
#misra-c-2012-conformity-test
)
*
[
Test Results
](
#test-results
)
-
[
0820 Assignment
](
#0820-assignment
)
<small><i><a
href=
'http://ecotrust-canada.github.io/markdown-toc/'
>
Table of contents generated with markdown-toc
</a></i></small>
## What is Fixed Point sXXYY?
...
...
@@ -208,7 +210,7 @@ dep :
```
### gcc -O flag
#### -O
옵션별 세부 사항
#### -O
flag options
`[-Olevel]`
-
O0 : 최적화를 수행하지 않음 (Default)
-
O, -O1 : 코드 크기와 실행 시간을 줄이는 최적화만 수행
...
...
@@ -216,17 +218,14 @@ dep :
-
O3 : -O2 최적화에 인라인 함수와 레지스터에 대한 최적화를 추가로 수행
-
Os : -O2 최적화 기능을 사용하지만, 코드 크기를 증가하는 최적화는 제외
####
최적화 성능 비교
####
Optimization Results
for문을 통하여 2,147,483,648(INT_MAX)번의 연산을 반복하는 코드를 작성하고 -O0과 -O2 옵션을 주어 컴파일 한 뒤 실행시간을 측정하였다.
##### 결과

최적화를 하지 않았을 때 for문을 수행하는데 약 5분의 시간이 걸렸으나 -O2 옵션으로 최적화하였을 때 for문을 수행했는가 싶을 정도로 실행시간이 줄어들었음을 확인할 수 있었다.
#####
원인 분석
#####
Theoretical Background
실제로 코드가 어떻게 최적화 되었는지 확인하기 위해 gcc -S 옵션을 통해 컴파일된 어셈블리 코드를 분석해 보았다.
```
pi@raspberrypi:~/battle_c_1 $ gcc -S -DTEST -lm test.c
...
...
@@ -244,7 +243,7 @@ test.s는 main 라벨에서 처음 clock 함수를 호출한다. 이후 L2 라
실제로 for문 내부에서 실행되는 코드들은 그 안에서만 연산될 뿐 for문 밖의 코드에 영향을 주지 못한다. 외부 변수에 연산의 결과를 저장하거나 출력하는 코드가 없기 때문이다.
-O2 옵션을 주어 컴파일 하였을 때 컴파일러가 이를 확인하고 어셈블리 코드에 포함시키지 않아 극단적인 성능 차이를 보여준 것으로 보인다.
##### gprof
사용법
##### gprof
```
gcc -pg main.c
./a.out #gmon.out is made after running a.out
...
...
@@ -301,7 +300,7 @@ gprof
###
정확도 테스트
###
Precision Tests
*
Multiply
1.
MUL_01

...
...
@@ -340,7 +339,7 @@ DIV_03의 경우 오차율이 조금 증가하지만 범용적으로 사용할
<br>
<br>
###
속도 테스트
###
Performance Speed Tests

...
...
@@ -476,9 +475,9 @@ Index by function name
<br>
## 0819
과제
## 0819
Assignment
###
요구사항 명세
###
Requirements Specification
*
목적
double로 input을 받아서 fx_s1615로 변환하여 사칙연산을 수행한다.
...
...
@@ -539,7 +538,7 @@ double로 input을 받아서 fx_s1615로 변환하여 사칙연산을 수행한
<br>
###
코딩 규칙 검사(
MISRA-C 2012
)
### MISRA-C 2012
Conformity Test
총 39였던 오류를 아래의 20개의 오류로 수정하였다.
```
...
...
@@ -550,11 +549,11 @@ double로 input을 받아서 fx_s1615로 변환하여 사칙연산을 수행한
```

###
검사 결과 리포트
###
Test Results
violations 첨부함
## 0820
과제
## 0820
Assignment
*
유닛테스트를 통해 커버리지 확인하기

...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment