HAM 여행

오늘은 CPU가 어떻게 일을 하는지 보겠습니다.

CPU가 하는일을 요약하면


Fetch(인출) : 메모리상의 프로그램 카운터가 가리키는 명령어를 CPU로 인출하여 적재

Decode(해석) : 명령어의 해석. 이 단계에서 명령어의 종류와 타겟 등을 판단한다

Execute(실행) : 해석된 명령어에 따라 데이터에 대한 연산을 수행한다.

Writeback(쓰기) : 명령어대로 처리 완료된 데이터를 메모리에 기록한다.


참고로 CPU는 한 싸이클에 한 명령어(우리가 알고 있는 ls, cd 등과 같은 명령어 와는 다름)를 처리 합니다.


즉 다음과 같이 일을 한다.

Fetch: 실행할 명령어들을 가져온다. 이후 단계들도 그렇지만, 한 번에 보통 4개 정도를 처리하는데, Superscalar라고 불리는 기술은 이렇게 한 사이클에 여러 명령어를 처리하는 것을 말한다.


Decode: 이후 처리를 돕기 위해 명령어의 종류를 구분한다. Intel의 x86 ISA같이 복잡한 명령어를 쓰는 CISC의 경우, 내부적으로 RISC 명령어들로 쪼개지는 과정이 여기서 수행된다. 옛날 프로그램을 짜기 어려웠던 이유는 바로 이 디코드 동작시 불러오는 CPU 명령함수들이 CPU마다 전부 다 다르다는 것 때문이었다. 현재는 몇 개 회사가 CPU 공급을 독점하면서 그나마 단순화되었다. (같은 회사는 추가 기능이 없다면 같은 명령함수를 쓰는 게 일반적)


Rename: 명령어가 가리키는 레지스터(CPU에서 값을 저장하는 x86 ISA의 eax나 ebx등의 이름있는 공간들)를, 내부에 숨어있는 물리적 레지스터로 매핑한다. 이러한 과정은 Out-of-order CPU에서 발생하는 False-dependency 문제를 해결하기 위해 필수적이다.



Dispatch: 명령어가 실행하기 위해 기다리는 대기열 (ROB, IQ, LSQ)에 명령어를 넣는다.


Issue: 대기열에 있는 명령어가 실행될 수 있으면 실행하기 위한 장치(가령 계산 명령어는 ALU, 메모리 명령어는 Cache)로 보낸다. 참고로 프로그램에서 시간상 뒤의 명령어가 앞의 명령어보다 먼저 Issue될 수 있다. 이것이 바로 Out-of-order CPU의 핵심 동작 중 하나다


Execute: 실행한다


Writeback: 결과값을 레지스터에 써야 한다면 쓴다. 결과값을 기다리고 있던 명령어가 있다면 결과가 생겼다고 알려준다.


Commit: 명령어 수행을 완료하고, 명령어 실행을 위해 할당받은 자원을 모두 토해(반납)낸다. 명령어의 실행 결과를 사용자에게 노출시키며 (이거 전에는 노출이 안 된다), 이후로는 명령어의 실행을 취소 할 수 없다.



그리고 Out-of-order CPU를 만들기 위해선, 위의 명령어 처리 과정 외에도 몇몇 핵심 기술들이 요구된다.


Cache (캐시 메모리): 주 메모리 값을 임시 저장하는 작고 빠른 메모리. 주 메모리 접근은 CPU입장에서 100사이클 정도 놀게 만드는 엄청나게 느린 동작이므로 Cache가 없으면 명령어를 빠르게 실행하고 싶어도 값이 준비가 안 돼서 불가능하다. 캐시 메모리도 한 개만 존재하는 것이 아니라, 보통 중요도와 접근 빈도에 따라 L1~L3의 3개 캐시 메모리를 사용하며, 숫자가 작을수록 용량이 더 작고, 더 빠르다. 또한 캐시 메모리만을 위한 색인 제조 방법과 구동방식은 해당 문서에서 확인 바람.


Branch prediction: Fetch를 매 사이클마다 하기 위해선 다음에 실행할 명령어 주소를 알아야 하는데, branch 명령의 결과가 나오려면 꽤나 시간이 걸린다 (게다가 프로그램마다 차이는 있지만, 명령어의 약 30%정도는 branch이다.) 그러니 branch 명령의 결과를 과거의 기록을 기반으로 예측하는 기술이 필요하다.


Speculative memory disambiguation: 메모리 접근 명령어들은 메모리 접근 전에 접근할 메모리 주소를 먼저 구해야 한다. 이 때문에 만약 LSQ에 Store 명령이 접근할 메모리 주소를 계산하기 위해 대기중이면, 이후 모든 Load 명령어는 접근할 메모리 주소가 준비되었다 하더라도 메모리 접근을 할 수 없다. 혹시라도 그 Store가 접근하는 주소가 Load가 접근하는 주소랑 같으면 가장 신선한 값은 메모리가 아니라 그 Store 명령어가 가지고 있기 때문이다.하지만 할 수 없는 걸 그냥 해버리면? (즉, Speculative memory disambiguation) 대부분의 경우 접근하는 메모리 주소는 다르기 때문에 문제가 없으며, 문제가 있더라도 그 Store가 접근하는 메모리 주소를 계산하기 전까진 Load들을 Commit을 하지 않는 것으로 실행 취소가 가능하다.


오늘 이야기는 조금 어려운 이야기가 되었습니다.

그러나 Linux(라즈베리파이)를 사용하면서 CPU가 어떤 과정을 거쳐서 일을 하는지는 감으로나마 알고 있는것이

필요하지 않을까하여 몇자 적었습니다.


프로그래밍이란것이 그리고 소프트웨어가 얼마나 잘 만들어 졌고 잘 돌아가고 얼마나 가벼운지는 CPU가

어떻게 일을 하는지를 모르면 설명하는데 한계가 있는것 같습니다.

CPU가 하는 일 중에서 일부분을 설명했습니다.

다음은 CPU의 명령체계와 레지스터리에 대한것을 설명 할까 합니다.


감사합니다.


DE HL1RR 73!


글로벌스피드 https://smartstore.naver.com/globalspeed





오늘은 라즈베리파이(Linux OS) 성능에 대하여 간단히 설명하고자 합니다.

여러분 모두 잘 알고 계신 내용을 모르고 계신분을 위하여 설명합니다.

라즈베리파이의 성능은 크게 2가지로 구분 합니다.

[1] 라즈베리파이 하드웨어에 대한 성능과

[2] 라즈베리파이 에서 구동되는 프로그램(소프트웨어)로 구분합니다.


[1]번은 어떤것을 선택하느냐에 따라 정해 집니다.

즉 라즈베리파이 P2, 라즈베리파이 P3 등과같이 정해 집니다.

여기서는 라즈베리파이 소프트웨어에 대하여 성능을 평가하는 법을 간단히 설명합니다.

라즈베리파이의 소프트웨어는 OS와 응용프로그램(예:DV4mini 등)으로 구분합니다.

사용하고 계신 라즈베리파이의 현재 소프트웨어 성능을 보기 위하여는

$top <엔터> 하시면 위에 사진과 같은 화면이 나옵니다.

이것은 top 화면이라고 합니다.

여기서 빠져 나오려면 q 를 누르면 빠려 나옵니다.


top 화면에서 표시하는 정보는 그 순간의 정보를 표시 합니다.

top 화면을 10 여초 정도 보고 판단하시면 됩니다.

1번은 현재 프로그램이 돌아가려고 하는것의 total 입니다. 이 화면에서는 155개 입니다.

2번은 CPU 가 얼마나 일하고 있는가를 표시 합니다. 이 화면에서는 1.5% 입니다.

3번은 현재 프로그램이 돌아가고 있는 것의 total 입니다. 이 화면에서는 1개 입니다.

4번은 CPU 가 쉬고 있는(일 안하고 있는) 것을 표시 합니다. 이 화면에서는 97.3% 입니다.

5번은 Swap 을 얼마나 사용하고 있는가를 표시 합니다. 이 화면에서는 0 입니다.


이제부터 내가 사용하고 있는 라즈베리파이(소프트웨어)의 성능을 설명하겠습니다.

3번 숫자가 크고(and), 4번 숫자가 크고(and), 5번 숫자가 0 일수록 라즈베리파이에서 돌아가는 소프트웨어가

좋다고 말할수 있습니다.

즉 3번 숫자가 크다는것은 프로그램이 많이 돌아가고 있다는것이고,

4번 숫자가 크다는것은 CPU 가 일할것이 별로 없다는 것이고,

반대로 숫자가 적다는 것은 CPU 가 일을 많이해서 쉴 틈이 없다는 뜻으로 성능 면에서는 별로 좋다고 할수

없습니다.

5번 숫자가 의미 하는 것은 CPU(OS)가 일하면서 필요한 정보를 별도의 기억장소(장치)에 저장했다가

다시 불려와 사용합니다. 이때 사용하는 기억장소(장치)를 Linux 에서는 Swap 영역이라고 합니다.

그러므로 5번 숫자가 0 이란것은 CPU 가 Swap 영역을 사용하지 않고 있다는 것으로 좋다고 할수 있습니다.

Swap 영역을 자주 사용하면 사용한 많큼 CPU 속도가 떨어 집니다.즉 CPU가 단위 시간내 일한것이 적다는

뜻으로 좋지 않습니다.


보통은 3번 숫자가 늘어나면 4번 숫자는 줄어 듭니다.

여기서 CPU가 일할수 있는 용량(?)을 100%로 보고  2번 줄(칸)에 있는 숫자 모두를 더하면 100%가 됩니다.


CPU는 시간을 나눠서 일을 합니다.

즉 CPU 가 해야하는 일이 10분 동안 10개가 있다고 하면 1번 1분, 2번 1분, 3번 1분 .........이렇게 시간을

할당하여 일을 합니다.(통상적으로)

물론 여기서 2번은 2분, 1번은 30초 이렇게 정할수도 있습니다.

 

감사합니다.


DE HL1RR 73!

글로벌스피드 https://smartstore.naver.com/globalspeed

라즈베리파이 P2, P3 에서 사용할수 있는 

BlueDV , dv4mini 이미지 파일 입니다,

VNC 가 설치 되어 있습니다.


pi 암호 : 1234

VNC 암호 : raspberry



https://www.dropbox.com/s/7fxrmvmgurogye8/VNC%2BBlueDV%2Bdv4mini.egg?dl=0

 

 

 

글로벌스피드 https://smartstore.naver.com/globalspeed

안녕하세요?

국내에서 사용중인 ThumbDV 를 이용한 BlueDV AMBEServer 를 만들었습니다.

이것은 WINDOWS 용이 아닌 리눅스 용 입니다.

라즈베리파이 에서 사용할수 있는 BlueDVAMBEServer 프로그램 입니다,

프로그램 이미지 사이즈가 4GB 입니다.

사용법은 압축을 푸신후

SD 카드에 WRITE 한후 라즈베리파이에 삽입한후 전원을 켜면(ON) 자동으로

프로그램이 실행 됩니다.(별도 설정이 없습니다. 핸드폰만 설정하면 됩니다.)

.

핸드폰에서 BlueDVAMBE 를 실행한다음 "SETUP" 으로 들어가서

1. AMBEServer IP 를 라즈베리파이 IP를 입력한 후

2. AMBEServer port 는 2460 을 입력하고

3. SUBMIT 를 눌려 저장하면 됩니다.

4. 명령어

   가. start.sh ---> 수동으로 프로그램 START

   나. stop.sh ---> 수동으로 프로그램 STOP

.



압축을 하여도 상당히 많은 양으로 배포하는데 고민을 많이 하였습니다.

많은 사람이 잘 사용했으면 합니다.


파일 다운로드 https://www.dropbox.com/s/pb488ps7kdt6e9n/BlueDV-AMBEServer-4GB.egg?dl=0

감사합니다.



 

de HL1RR 73 !


 

글로벌스피드 https://smartstore.naver.com/globalspeed

'DV 이야기 > DMR 이야기' 카테고리의 다른 글

pi-star 시작하기  (0) 2019.04.01
라즈베리용 BlueDV dv4mini 이미지  (0) 2019.03.04
DMR 통신에서 TDMA방식은 무엇인가?  (0) 2018.11.07
DMR 통신 4  (0) 2018.10.24
DMR 통신 3  (0) 2018.10.24

FT-7900 설정은 다음과 같이 하면 됩니다.


BAND/SET 버튼 클릭(길게) ---> DAIL 을 돌려 #26 선택[PKT.SPD] ---> BAND/SET 버튼 클릭(짧게) ---> DAIL 을 돌려

9600 을 선택 --->  BAND/SET 버튼 클릭(길게)


이렇게 하면 PACKET 9600 BPS로 설정 됩니다.

 

글로벌스피드 https://smartstore.naver.com/globalspeed

1. https://octoprint.org/ 에 접속해서 download 버튼을 클릭해 옥토프린트 이미지를 다운받고 압축을 풉니다.

 

2. 이미지 쓰기가 완료되면 이미지 폴터안에 있는 octopi-wpa-supplicant.txt 를 수정하여 와이파이를 설정한다.
    (적색 부분)
    #WPA/WPA2 secured
        network={
          ssid="와이파이 SSID"
          psk="와이파이 비밀번호"
        }

 

3. SD카드를 라즈베리파이 SD슬롯에 삽입한후 부팅한다.

 

4. 펌웨어 업데이트 플러그인 설치

sudo apt-get update
sudo apt-get install avrdude


참고 : https://plugins.octoprint.org/plugins/firmwareupdater/

 

입력을 한 다음 "Test" 버튼을 클릭한다.

                    

 

    The path is valid 라고 표시되면 save 한다

 

5. 원격제어 명령어 설치 

sudo nano /etc/init.d/octoprint  로 파일을 열어 다음과 같이 추가 한다.

(적색 부분을 추가 한다.) 

 

do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started

 

   gpio export 17 out
   gpio export 27 out


   is_alive $PIDFILE
   RETVAL="$?"

   if [ $RETVAL != 0 ]; then
       start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
       --exec $DAEMON --chuid $OCTOPRINT_USER --user $OCTOPRINT_USER --umask $UMASK -- serve $DAEMON_ARGS
       RETVAL="$?"
   fi
}

 

sudo nano ~/.octoprint/config.yaml  로 파일을 열어 맨 밑에 다음과 같이 추가 한다.

 

경로는 /home/pi/.octoprint

 

system:
  actions:
  - action: printon
    command: gpio -g write 17 1
    name: POWER ON
  - action: printoff
    command: gpio -g write 17 0
    name: POWER OFF
  - action: ledon
    command: gpio -g write 27 1
    name: LED ON
  - action: ledoff
    command: gpio -g write 27 0
    name: LED OFF

webcam:
  ffmpeg: /usr/bin/avconv
  snapshot:
http://127.0.0.1:8080/?action=snapshot
  stream: /webcam/?action=stream

 

 6. 이상과 같이 설치하면 특별한 문제가 없이 잘 동작한다.


Booking.com

 

 

글로벌스피드 https://smartstore.naver.com/globalspeed

'HAM과 3D프린터' 카테고리의 다른 글

FLSUN Marlin-1.1.8-Cube-Cyclops Configuration.h  (0) 2019.03.04

O D-STAR, DMR CROSS MODE

 

 

de HL1RR 73 !

 

글로벌스피드 https://smartstore.naver.com/globalspeed

안녕하십니까?

DMR 교신시에 대한 여러 이야기가 있어 몇자 적습니다.

DMR 교신시 외국국을 보면 TG를 옮겨 교신하자는 것을 저는 보지 못햇습니다.

유독 우리나라만 그런지는 모르겠습니다.

특히 DMR+ 에서는 더더욱 그렇습니다.

특히 DMR WW TG에서교신도 마찬가지라고 생각 합니다.

WW TG에서 한국사람끼리 교신하는것은 당연하다고 생각 합니다.

예를 들어 미국사람끼리는 교신을 잘하고 있는데

한국사람끼리 교신은 WW TG라는것 때문에 TG를 옮기는것은 넌센스라고 생각 합니다.

한국은 지구상의 국가가 아닌가요?

당연히 한국도 WW 의 한 국가 입니다.

TG 를 옮기는것은 본인의 취향 입니다.

그러나  TG를 옮겨 교신하는것이 교신수칙은  아니라고 생각 합니다.

외국의 TG를 많이 수신하였으나 TG를 옮기는것이 교신수칙 이라는것은

듣지 못했습니다.

모쪼록 DMR+ 만이라고 TG를 옮겨 교신하는 일이 없기를 바랍니다.

굳이 TG를 옮겨 교신하는것은 쌍방간의 약속(?) 이지 절대로 교신수칙은 아닙니다.

그리고 DMR+ 에서는 아주 많은 TG가 있어 사용에 불편이 없습니다.


DMR TG 교신에 대한 개인적인 의견을 몇자 적었습니다.

모쪼록 즐거운 교신이 되시길 바랍니다.


de HL1RR  73 !!

Booking.com

'DMR+ 이야기' 카테고리의 다른 글

D-STAR / DMR 크로스 모드 교신  (0) 2019.03.11
D-STAR DMR CROSS MODE  (0) 2018.12.29
DMR+ IPSC2-KOREA TG45004 TG45021 TG45022 ADD  (0) 2018.11.17
DMR PLUS(IPSC2)와 BM은 무엇인가?  (0) 2018.11.02
DMR PLUS 서버 및 연결 현황  (0) 2018.11.01

Added DMR + IPSC2-KOREA TG45004, TG45021, and TG45022.

You can also use the TG45004, TG45021, and TG45022 in DMR +.

You can use the existing code plugs as they are (no need to create new codeplugs).

 

To do so, select "DMR + _IPSC2-KOREA" and click "Apply Changes" as shown below.




 

de HL1RR / LIM 73 !!

 

Booking.com

'DMR+ 이야기' 카테고리의 다른 글

D-STAR DMR CROSS MODE  (0) 2018.12.29
DMR WW 교신에 대하여  (0) 2018.11.27
DMR PLUS(IPSC2)와 BM은 무엇인가?  (0) 2018.11.02
DMR PLUS 서버 및 연결 현황  (0) 2018.11.01
IPSC2-KOREA WW TGs  (0) 2018.11.01

DV통신 구조

DV 이야기2018. 11. 15. 12:00

이번에는 DV통신에 대하여 이야기 하고자 합니다.

DV통신은 여러 모드가 있습니다.

D-STAR, DMR,C4FM,P25 등등...

DV통신을 하기 위해서는 DV통신이 가능한 무전기와 핫스팟(주변에 DV 리피터가 있으면 필요 없음)이

필요합니다.

또는 DV통신을 할수 있는 환경(컴퓨터, 소프트웨어 등등)이 구축되면 가능 합니다.

오늘은 DV통신을 할수 있는 환경에 대하여 설명하려고 합니다.

 

DV통신은 다음과 같은 구조를 가지고 있습니다.

[송신시]

아날로그 음성 --> 디지털 음성 --> 디지털 압축(AMBE ENCODE) --> 프로토콜추가(DV 모드) --> 외부

[수신시]

아날로그 음성 <-- 디지털 음성 <-- 디지털 분리(AMBE DECODE) <-- 프로토콜분리(DV 모드) <-- 외부

 

여기서 아날로그를 디지털처리, 디지털 압축(분리), 프로토콜추가(분리) 등을 하드웨어로 또는

소프트웨어로 처리하면 됩니다.

보통 디지털 압축 및 분리는 AMBE 칩을 사용하여 처리 합니다.

AMBE 칩은 CPU 의 부하를 적게주면서 빠른 압축 및 분리를 할수 있기 때문 입니다.

이것을 AMBE 칩을 사용하지 않고 CPU(컴퓨터)로 처리하려면 빠른 CPU가 필요 합니다,

또한 아날로그 음성을 디지털 음성으로 처리 하는데도 빠른 CPU가 필요하고, 프로토콜 추가 및 분리도

빠른 CPU가 필요 합니다. 이런 과정을 모두 CPU로 처리하려면 아주 빠른 CPU가 필요하겠지요.

요즘 많이 사용하는 AMBE서버도 이런구조로 되어 있습니다. AMBE서버는 AMBE칩을 사용하고 있습니다.

우리가 사용하고 있는 핸드폰은 어느정도 CPU가 빠른가요?

핸드폰 마다 조금씩 차이는 있겠지만 집에서 사용하는 데스크탑 컴퓨터 만큼은 빠르지 않겠지요?

DV통신을 하기 위하여 핸드폰을 이용하여 모든 과정을 처리 한다면 아마도 핸드폰이 처리하기는

힘들지 않을까 생각 합니다. 처리속도 하나만 생각해도 핸드폰이 빠르다면 아마도 데스크탑 켬퓨터는

사라지지 않을까 생각 합니다.

 

[참고]

AMBE (Advanced Multi Band Excitation)는 DVSI 라는 회사에서 만든 디지털 음성 압축
반도체이다. 이러한 음성 압축 반도체를 흔히 보코더칩(Vocoder Chip)이라고 한다.

 

Booking.com