èæ¯
èªç€Ÿãã¶ã€ã³ã®èªå販売æ©ãããããŸãã Raspberry Pi ã®å éšãšå¥ã®ããŒãäžã®ããã€ãã®é ç·ãã³ã€ã³ã¢ã¯ã»ãã¿ãçŽå¹£ã¢ã¯ã»ãã¿ãéè¡ç«¯æ«ãæ¥ç¶ãããŠããããã¹ãŠãèªäœã®ããã°ã©ã ã«ãã£ãŠå¶åŸ¡ãããŠããŸããäœæ¥å±¥æŽå šäœã¯ãã©ãã·ã¥ ãã©ã€ã (MicroSD) äžã®ãã°ã«æžã蟌ãŸããã€ã³ã¿ãŒããã (USB ã¢ãã ã䜿çš) çµç±ã§ãµãŒããŒã«éä¿¡ãããããŒã¿ããŒã¹ã«ä¿åãããŸãã販売æ å ±ã¯ 1c ã«ããŒããããç£èŠãªã©ã®ããã®ç°¡å㪠Web ã€ã³ã¿ãŒãã§ã€ã¹ããããŸãã
ã€ãŸããä»èš³åž³ã¯äŒèš (åçã売äžãªã©)ãç£èŠ (ããããçš®é¡ã®å€±æããã®ä»ã®äžå¯æåç¶æ³) ã«ãšã£ãŠäžå¯æ¬ ã§ãããããããã®ãã·ã³ã«ã€ããŠç§ãã¡ãç¥ã£ãŠãããã¹ãŠã®æ å ±ã§ãããšèšãããããããŸããã
åé¡
ãã©ãã·ã¥ ãã©ã€ãã¯ãéåžžã«ä¿¡é Œæ§ã®äœãããã€ã¹ã§ããããšãããããŸãã圌ãã¯ããããŸããã»ã©å®æçã«å€±æããŸããããã«ããããã·ã³ã®ããŠã³ã¿ã€ã ãš (äœããã®çç±ã§ãã°ããªã³ã©ã€ã³ã§è»¢éã§ããªãã£ãå Žå) ããŒã¿æ倱ã®äž¡æ¹ãçºçããŸãã
ãã©ãã·ã¥ ãã©ã€ãã䜿çšããã®ã¯ãããåããŠã®çµéšã§ã¯ãããŸãããããããåã«ã¯ãéèªã USB ãã©ãã·ã¥ ãã©ã€ãã«ä¿åãããŠãã 100 å°ä»¥äžã®ããã€ã¹ã䜿çšããå¥ã®ãããžã§ã¯ãããããŸãããä¿¡é Œæ§ã«ãåé¡ãããã倱æããããã€ã¹ã®æ°ãå€ãã£ãã§ãã 1ãæã¯æ°åã§ããã SLC ã¡ã¢ãªãæèŒãããã©ã³ãåãªã©ãããŸããŸãªãã©ãã·ã¥ ãã©ã€ããè©ŠããŸããããäžéšã®ã¢ãã«ã¯ä»ã®ã¢ãã«ãããä¿¡é Œæ§ãé«ããªããŸããããã©ãã·ã¥ ãã©ã€ãã亀æããŠãåé¡ã¯æ ¹æ¬çã«è§£æ±ºãããŸããã§ããã
èŠåïŒ é·ãèªãã§ãã ããïŒ ããªããã«ã¯èå³ããªãããã©ã®ããã«ãã ãã«èå³ãããå Žåã¯ããã®ãŸãŸé²ãã§ãã ããã
ãœãªã¥ãŒã·ã§ã³
æåã«æãæµ®ãã¶ã®ã¯ãMicroSD ãæŸæ£ããããšãã° SSD ãåãä»ããŠãããããèµ·åããããšã§ããããããçè«çã«ã¯å¯èœã§ãããæ¯èŒçé«äŸ¡ã§ãä¿¡é Œæ§ãããã»ã©é«ããããŸãã (USB-SATA ã¢ããã¿ãŒãè¿œå ãããŸããäœäºç® SSD ã®é害統èšãæåŸ ã§ãããã®ã§ã¯ãããŸãã)ã
USB HDD ããç¹ã«é åçãªãœãªã¥ãŒã·ã§ã³ãšã¯æããŸããã
ãããã£ãŠãMicroSD ããã®èµ·åã¯ãã®ãŸãŸã«ããŠãèªã¿åãå°çšã¢ãŒãã§äœ¿çšããæäœãã° (ããã³ç¹å®ã®ããŒããŠã§ã¢ã«åºæã®ãã®ä»ã®æ å ± - ã·ãªã¢ã«çªå·ãã»ã³ãµãŒã®ãã£ãªãã¬ãŒã·ã§ã³ãªã©) ãå¥ã®å Žæã«ä¿åãããšãããªãã·ã§ã³ã«ãã©ãçããŸããã ã
ã©ãºããªãŒã®èªã¿åãå°çš FS ã®ãããã¯ã¯ãã§ã«åŸ¹åºçã«ç 究ãããŠããããããã®èšäºã§ã¯å®è£ ã®è©³çŽ°ã«ã€ããŠã¯è§ŠããŸããã (ãã ããèå³ãããã°ããã®ãããã¯ã«é¢ããããèšäºãæžããããããŸãã)ãç§ã泚æãããå¯äžã®ç¹ã¯ãå人çãªçµéšãããããã§ã«å°å ¥ãã人ã®ã¬ãã¥ãŒããããä¿¡é Œæ§ãåäžããŠãããšããããšã§ããã¯ããæ éãå®å šã«ãªããããšã¯äžå¯èœã§ãããæ éã®é »åºŠãå€§å¹ ã«æžããããšã¯ããªãå¯èœã§ãããŸããã«ãŒãã¯çµ±åããã€ã€ããããããµãŒãã¹æ åœè ã«ãã亀æãã¯ããã«ç°¡åã«ãªããŸãã
ããŒããŠã§ã¢
ã¡ã¢ãªã®çš®é¡ã§ãã NOR ãã©ãã·ã¥ã®éžæã«ç¹ã«çåã¯ãããŸããã§ããã
åŒæ°ïŒ
- ç°¡åãªæ¥ç¶ (ã»ãšãã©ã®å ŽåãSPI ãã¹ã䜿çšããŸãããã§ã«äœ¿çšçµéšããããããããŒããŠã§ã¢ã®åé¡ã¯çºçããŸãã)ã
- ãšãã§ããªãå€æ®µã
- æšæºåäœãããã³ã« (å®è£ ã¯ãã§ã« Linux ã«ãŒãã«ã«çµã¿èŸŒãŸããŠããŸããå¿ èŠã«å¿ããŠãåæ§ã«ååšãããµãŒãããŒãã£è£œã®ãããã³ã«ã䜿çšããããšããç¬èªã®ãããã³ã«ãäœæããããšãã§ããŸãã幞ããªããšã«ããã¹ãŠãç°¡åã§ã)ã
- ä¿¡é Œæ§ãšãªãœãŒã¹:
äžè¬çãªããŒã¿ã·ãŒããã: ããŒã¿ã¯ 20 幎éä¿åããããããã¯ããšã« 100000 åã®æ¶å»ãµã€ã¯ã«ãè¡ãããŸãã
ãµãŒãããŒãã£ã®ãœãŒã¹ãã: BER ãéåžžã«äœãããšã©ãŒèšæ£ã³ãŒããäžèŠã§ãããšæ³å®ãããŸãã (äžéšã®äœåã§ã¯ ECC ã NOR ãšã¿ãªããŸãããéåžžã¯äŸç¶ãšã㊠MLC NOR ãæå³ããŸãããããèµ·ãããŸã).
ããªã¥ãŒã ãšãªãœãŒã¹ã®èŠä»¶ãèŠç©ãã£ãŠã¿ãŸãããã
ããŒã¿ã®æ°æ¥éã®ä¿åãä¿èšŒããŠã»ãããããã¯ãéä¿¡äžã®åé¡ãçºçããå Žåã«è²©å£²å±¥æŽã倱ãããªãããã«ããããã«å¿ èŠã§ãããã®æéäžã5æ¥éã«çŠç¹ãåœãŠãŸãã ïŒåæ¥ç¥æ¥ãèæ ®ã«å ¥ããŸãïŒ åé¡ã¯è§£æ±ºã§ããŸãã
çŸåšã100 æ¥ãããçŽ 3 kb ã®ãã° (4 ïœ 10 ãšã³ããª) ãåéããŠããŸããããã®æ°åã¯åŸã ã«å¢å ããŠããã詳现ãå¢å ããæ°ããã€ãã³ããè¿œå ãããŠããŸããããã«ãããŒã¹ããçºçããããšããããŸã (ããšãã°ãäžéšã®ã»ã³ãµãŒã誀æ€ç¥ã§ã¹ãã éä¿¡ãéå§ããŸã)ã 100 ã¬ã³ãŒãã«ã€ããŠããããã XNUMX ãã€ããã€ãŸã XNUMX æ¥ãããã¡ã¬ãã€ããèšç®ããŸãã
åèš 5MB ã®ã¯ãªãŒã³ãª (é©åã«å§çž®ããã) ããŒã¿ãåºåãããŸãããã£ãšåœŒãã« ïŒãããŸããªèŠç©ããïŒ 1MBã®ãµãŒãã¹ããŒã¿ã
ã€ãŸããå§çž®ã䜿çšããªãå Žå㯠8MB ã®ããããå¿ èŠãšãªããå§çž®ã䜿çšããå Žå㯠4MB ã®ããããå¿ èŠã«ãªããŸãããã®ã¿ã€ãã®ã¡ã¢ãªã§ã¯éåžžã«çŸå®çãªæ°å€ã§ãã
ãªãœãŒã¹ã«é¢ããŠã¯ãã¡ã¢ãªå
šäœã 5 æ¥ã« 10 å以äžæžãæããããªããšèšç»ããå ŽåãXNUMX 幎é䜿çšããŠãæžãæããµã€ã¯ã«ã¯ XNUMX åæªæºã«ãªããŸãã
ã¡ãŒã«ãŒã¯10äžåãçŽæããŠããããšãæãåºãããŠãã ããã
NOR ãš NAND ã«ã€ããŠå°ã説æ
Today, of course, NAND memory is much more popular, but I would not use it for this project: NAND, unlike NOR, necessarily requires the use of error correction codes, a table of bad blocks, etc., and also the legs oféåžžãNAND ãããã¯ããã«å€ããªããŸãã
NOR ã®æ¬ ç¹ã¯æ¬¡ã®ãšããã§ãã
- ããªã¥ãŒã ãå°ããïŒãããã£ãŠãã¡ã¬ãã€ããããã®äŸ¡æ Œãé«ãïŒã
- éä¿¡é床ãé ã (ã·ãªã¢ã« ã€ã³ã¿ãŒãã§ã€ã¹ (é垞㯠SPI ãŸã㯠I2C) ã䜿çšãããããšãäž»ãªåå )ã
- é ãæ¶å» (ããã㯠ãµã€ãºã«å¿ããŠãæ°ç§ããæ°ç§ããããŸã)ã
ç§ãã¡ã«ãšã£ãŠéèŠãªãã®ã¯äœããªããããªã®ã§ãç¶è¡ããŸãã
詳现ã«èå³ãããå Žåã¯ããã€ã¯ãåè·¯ãéžæãããŠããŸã
ç§ã¯ Linux ã«ãŒãã«ã«çµã¿èŸŒãŸããŠãããã©ã€ããŒã䜿çšããŠããŸãããRaspberry ã§ã¯ãããã€ã¹ ããªãŒ ãªãŒããŒã¬ã€ ãµããŒãã®ãããã§ããã¹ãŠãéåžžã«ç°¡åã§ã - ã³ã³ãã€ã«ããããªãŒããŒã¬ã€ã /boot/overlays ã«çœ®ãã/boot/config.txt ãå°ãå€æŽããã ãã§ãã
dts ãã¡ã€ã«ã®äŸ
æ£çŽã«èšããšããšã©ãŒãªãæžãããŠãããã©ããã¯ããããŸããããæ£åžžã«åäœããŸãã
/*
* Device tree overlay for at25 at spi0.1
*/
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
/* disable spi-dev for spi0.1 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
spidev@1{
status = "disabled";
};
};
};
/* the spi config of the at25 */
fragment@1 {
target = <&spi0>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
flash: m25p80@1 {
compatible = "atmel,at25df321a";
reg = <1>;
spi-max-frequency = <50000000>;
/* default to false:
m25p,fast-read ;
*/
};
};
};
__overrides__ {
spimaxfrequency = <&flash>,"spi-max-frequency:0";
fastread = <&flash>,"m25p,fast-read?";
};
};
ãããŠconfig.txtã®å¥ã®è¡
dtoverlay=at25:spimaxfrequency=50000000
ããããšRaspberry Piã®æ¥ç¶ã«ã€ããŠã¯èª¬æãçç¥ããŸããäžæ¹ã§ã¯ãç§ã¯ãšã¬ã¯ãããã¯ã¹ã®å°é家ã§ã¯ãããŸããããä»æ¹ã§ã¯ãããã«ããããšã¯ç§ã«ãšã£ãŠãããããµãããã®ã§ããè¶ å°ååè·¯ã«ã¯ 8 æ¬ã®èãããªãããã®ãã¡ã®ã°ã©ã³ããé»æºãSPI (CSãSIãSOãSCK) ãå¿ èŠã§ãã );ã¬ãã«ã¯ Raspberry Pi ãšåãã§ãè¿œå ã®é ç·ã¯å¿ èŠãããŸãããæå®ããã 6 ã€ã®ãã³ãæ¥ç¶ããã ãã§ãã
åé¡ã®å®åŒå
ãã€ãã®ããã«ãåé¡ã¹ããŒãã¡ã³ãã¯äœåºŠãå埩ããã次ã®å埩ã®ææãæ¥ãããã«æããŸããããã§ãããã§ç«ã¡æ¢ãŸã£ãŠããã§ã«æžãããããšããŸãšããŠã圱ã«æ®ã£ãŠãã詳现ãæããã«ããŸãããã
ããã§ããã°ã SPI NOR Flash ã«ä¿åããããšã«ããŸããã
ç¥ããªã人ã®ããã«ãNOR Flash ãšã¯äœã§ãã?
ããã¯ã次㮠3 ã€ã®æäœãå®è¡ã§ããäžæ®çºæ§ã¡ã¢ãªã§ãã
- èªãïŒ
æãäžè¬çãªèªã¿åã: ã¢ãã¬ã¹ãéä¿¡ããå¿ èŠãªã ããã€ããèªã¿åããŸãã - èšé²ïŒ
NOR ãã©ãã·ã¥ãžã®æžã蟌ã¿ã¯éåžžã®æžã蟌ã¿ã®ããã«èŠããŸãããç¹åŸŽã 1 ã€ãããŸãã0 ãã 0 ãžã®å€æŽã®ã¿ãå¯èœã§ããã®éã¯ã§ããªããšããããšã§ããããšãã°ãã¡ã¢ãª ã»ã«ã« 55x0 ããã£ãå Žåã0x0f ãæžã蟌ãã åŸã05xXNUMX ããã§ã«ããã«æ ŒçŽãããŠããŸãã (ããäžã®è¡šãåç §); - æ¶å»ïŒ
ãã¡ãããéã®æäœãã€ãŸã 0 ã 1 ã«å€æŽããããšãã§ããå¿ èŠããããŸããããããŸãã«æ¶å»æäœã®ç®çã§ããæåã® 4 ã€ãšã¯ç°ãªãããã€ãã§ã¯ãªããããã¯ã§åäœããŸã (éžæãããããã®æå°æ¶å»ãããã¯ã¯ 0kb ã§ã)ãæ¶å»ã¯ãããã¯å šäœãç Žå£ãã1 ã XNUMX ã«å€æŽããå¯äžã®æ¹æ³ã§ãããããã£ãŠããã©ãã·ã¥ ã¡ã¢ãªã䜿çšããå Žåãå€ãã®å ŽåãããŒã¿æ§é ãæ¶å»ãããã¯ã®å¢çã«æããå¿ èŠããããŸãã
NOR ãã©ãã·ã¥ã§ã®èšé²:
ãã€ããªããŒã¿
ã ã£ã
01010101
é²é³æžã¿
00001111
ãªã£ã
00000101
ãã°èªäœã¯ãå¯å€é·ã®ã¬ã³ãŒãã®ã·ãŒã±ã³ã¹ãè¡šããŸããã¬ã³ãŒãã®é·ãã¯éåžžçŽ 30 ãã€ãã§ã (ãã ããã¬ã³ãŒãã®é·ããæ°ãããã€ãã«ãªãå ŽåããããŸã)ã ãã®å Žåãããããåã«ãã€ãã®ã»ãããšããŠæ±ããŸãããèå³ãããå Žåã¯ãã¬ã³ãŒãå 㧠CBOR ã䜿çšãããŸãã
ãã°ã«å ããŠãç¹å®ã®ããã€ã¹ IDãã»ã³ãµãŒã®èª¿æŽããããã€ã¹ãäžæçã«ç¡å¹ã«ãªã£ãŠããããã©ã°ãªã©ãæŽæ°ããããã®ãšããã§ãªããã®ãå«ãããã€ãã®ãèšå®ãæ
å ±ãä¿åããå¿
èŠããããŸãã
ãã®æ
å ±ã¯ããŒãšå€ã®ã¬ã³ãŒãã®ã»ããã§ãããCBOR ã«ãä¿åãããŠããŸããããã®æ
å ±ã¯ããã»ã©å€ãã¯ãªã (ããããæ°ãããã€ã)ãæŽæ°ãããé »åºŠãäœãã§ãã
以äžã§ã¯ããããã³ã³ããã¹ããšåŒã³ãŸãã
ãã®èšäºã®å§ãŸããæãåºããŠãã ãããä¿¡é Œæ§ã®é«ãããŒã¿ ã¹ãã¬ãŒãžã確ä¿ããå¯èœã§ããã°ãããŒããŠã§ã¢é害ãããŒã¿ç Žæãçºçããå Žåã§ãç¶ç¶çãªéçšã確ä¿ããããšãéåžžã«éèŠã§ãã
ã©ã®ãããªåé¡ã®åå ãèããããŸãã?
- æžã蟌ã¿/æ¶å»æäœäžã¯é»æºããªãã«ããŠãã ãããããã¯ãããŒã«ã«å¯Ÿæããè¡ã¯ãªãããšããã«ããŽãªãŒã®ãã®ã§ãã
ããã®æ å ±è°è« stackexchange: ãã©ãã·ã¥ã®æäœäžã«é»æºããªãã«ãªããšãæ¶å» (1 ã«èšå®) ãšæžã蟌㿠(0 ã«èšå®) ã®äž¡æ¹ãæªå®çŸ©ã®åäœãåŒãèµ·ãããŸã: ããŒã¿ã¯æžã蟌ãããšãã§ããéšåçã«æžã蟌ãããšãã§ããŸã (ããšãã°ã10 ãã€ã/80 ãããã転éãããšããŸã) ããã ããŸã 45 ãããããæžã蟌ãããšãã§ããŸããïŒãäžéšã®ãããããäžéãç¶æ ã«ãªãå¯èœæ§ããããŸãïŒèªã¿åãã§ã¯ 0 ãš 1 ã®äž¡æ¹ãçæãããå¯èœæ§ããããŸãïŒã - ãã©ãã·ã¥ã¡ã¢ãªèªäœã®ãšã©ãŒã
BER ã¯éåžžã«äœãã§ããããŒãã«çããããããšã¯ã§ããŸããã - ãã¹ãšã©ãŒ
SPI çµç±ã§éä¿¡ãããããŒã¿ã¯ãããªãæ¹æ³ã§ãä¿è·ãããŠããããåäžããã ãšã©ãŒãšåæãšã©ãŒã®äž¡æ¹ãçºçããå¯èœæ§ããããŸã - ãããã®æ倱ãŸãã¯æ¿å ¥ (倧èŠæš¡ãªããŒã¿æªã¿ã«ã€ãªãããŸã)ã - ãã®ä»ã®ãšã©ãŒ/äžå
·å
ã³ãŒãã®ãšã©ãŒãã©ãºããªãŒã®äžå ·åããšã€ãªã¢ã³ã®å¹²æž...
ç§ã¯èŠä»¶ãçå®ããŸããããç§ã®èãã§ã¯ãä¿¡é Œæ§ã確ä¿ããã«ã¯ãã®èŠä»¶ãæºããããšãå¿ èŠã§ãã
- ã¬ã³ãŒãã¯çŽã¡ã«ãã©ãã·ã¥ ã¡ã¢ãªã«ä¿åãããå¿
èŠããããé
延æžã蟌ã¿ã¯èæ
®ãããŸããã - ãšã©ãŒãçºçããå Žåã¯ãã§ããã ãæ©ãæ€åºããŠåŠçããå¿
èŠããããŸãã - å¯èœã§ããã°ãã·ã¹ãã ã¯ãšã©ãŒããå埩ããå¿
èŠããããŸãã
(人çã«ããããããããã¹ãã§ã¯ãªããäŸã誰ããééããããšããããšæããŸããç·æ¥åèµ·ååŸããã¡ã€ã« ã·ã¹ãã ããå£ããããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãèµ·åããªããªã)
ã¢ã€ãã¢ãã¢ãããŒããèå¯
ãã®åé¡ã«ã€ããŠèãå§ãããšãã次ã®ãããªå€ãã®ã¢ã€ãã¢ãé ã®äžã«æµ®ãã³ãŸããã
- ããŒã¿å§çž®ã䜿çšããŸãã
- ããšãã°ãã¬ã³ãŒãèªäœãšã¯å¥ã«ã¬ã³ãŒã ããããŒãä¿åãããªã©ãè³¢ãããŒã¿æ§é ã䜿çšããŠãã¬ã³ãŒãã«ãšã©ãŒããã£ãå Žåã§ãåé¡ãªãæ®ããèªã¿åãããšãã§ããŸãã
- ããããã£ãŒã«ãã䜿çšããŠãé»æºããªãã«ãªã£ããšãã®èšé²ã®å®äºãå¶åŸ¡ããŸãã
- ãã¹ãŠã®ãã§ãã¯ãµã ãä¿åããŸãã
- äœããã®çš®é¡ã®ãã€ãºèæ§ã®ããã³ãŒãã£ã³ã°ã䜿çšããŸãã
ãããã®ã¢ã€ãã¢ã®ããã€ãã¯äœ¿çšãããŸããããä»ã®ã¢ã€ãã¢ã¯æŸæ£ãããããšã決å®ãããŸãããé çªã«è¡ããŸãããã
ããŒã¿å§çž®
ç§ãã¡ãæ¥èšã«èšé²ããåºæ¥äºèªäœã¯éåžžã«é¡äŒŒããŠãããåçŸå¯èœã§ãïŒã5 ã«ãŒãã«ç¡¬è²šãæããããããã€ããæž¡ãããã«ãã¿ã³ãæŒããããªã©ïŒããããã£ãŠãå§çž®ã¯éåžžã«å¹æçã§ããã¯ãã§ãã
å§çž®ãªãŒããŒãããã¯ãããã§ãã (åœç€Ÿã®ããã»ããµã¯éåžžã«åŒ·åã§ãæåã® Pi ã§ããåšæ³¢æ° 700 MHz ã®ã³ã¢ã XNUMX ã€ãããŸããããçŸåšã®ã¢ãã«ã«ã¯åšæ³¢æ° XNUMX ã®ã¬ãã«ããè¶ ããã³ã¢ãããã€ããããŸã)ãã¹ãã¬ãŒãžãšã®äº€æã¬ãŒãã¯äœããªããŸã (æ°ã¡ã¬ãã€ã/ç§)ãã¬ã³ãŒãã®ãµã€ãºã¯å°ããã§ããäžè¬ã«ãå§çž®ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå Žåãããã¯ãã©ã¹ã®åœ±é¿ãããããŸããã ïŒãŸã£ããæ¹å€çã§ã¯ãªããåã«è¿°ã¹ãŠããã ãã§ãïŒãããã«ãæ¬ç©ã®çµã¿èŸŒã¿ã§ã¯ãªããéåžžã® Linux ã䜿çšããŠãããããå®è£ ã«ã¯å€ãã®åŽåã¯å¿ èŠãããŸãã (ã©ã€ãã©ãªããªã³ã¯ããããããããã€ãã®é¢æ°ã䜿çšããã ãã§ååã§ã)ã
åäœäžã®ããã€ã¹ãããã°ã®äžéš (1.7 MBã70 ãšã³ããª) ãååŸãããæåã«ã³ã³ãã¥ãŒã¿ãŒã§å©çšå¯èœãª gzipãlz4ãlzopãbzip2ãxzãzstd ã䜿çšããŠå§çž®æ§ããã§ãã¯ãããŸããã
- gzipãxzãzstd ãåæ§ã®çµæã瀺ããŸãã (40Kb)ã
ãã¡ãã·ã§ããã«ãª xz ã gzip ãŸã㯠zstd ã®ã¬ãã«ã§ããã«çŸããããšã«ã¯é©ããŸããã - ããã©ã«ãèšå®ã® lzip ã§ã¯ãè¥å¹²æªãçµæãåŸãããŸããã
- lz4 ãš lzop ã¯ããŸãè¯ãçµæã瀺ããŸããã§ãã (150Kb)ã
- bzip2 ã¯é©ãã»ã©è¯ãçµæã瀺ããŸãã (18Kb)ã
ãããã£ãŠãããŒã¿ã¯éåžžã«ããå§çž®ãããŠããŸãã
ãããã£ãŠã(èŽåœçãªæ¬ é¥ãèŠã€ãããªããã°) å§çž®ãè¡ãããããšã«ãªããŸããããå€ãã®ããŒã¿ãåããã©ãã·ã¥ãã©ã€ãã«ä¿åã§ããããã§ãã
ãã¡ãªããã«ã€ããŠèããŠã¿ãŸãããã
æåã®åé¡: ãã¹ãŠã®ã¬ã³ãŒããçŽã¡ã«ãã©ãã·ã¥ãããå¿ èŠãããããšã«ãã§ã«åæããŠããŸããéåžžãã¢ãŒã«ã€ããŒã¯ãé±æ«ã«æžã蟌ã¿ãè¡ãææãæ¥ããšå€æãããŸã§ãå ¥åã¹ããªãŒã ããããŒã¿ãåéããŸããããŒã¿ã®å§çž®ãããã¯ãçŽã¡ã«åä¿¡ããäžæ®çºæ§ã¡ã¢ãªã«ä¿åããå¿ èŠããããŸãã
ç§ã¯æ¬¡ã® 3 ã€ã®æ¹æ³ãèããŠããŸãã
- äžã§èª¬æããã¢ã«ãŽãªãºã ã®ä»£ããã«èŸæžå§çž®ã䜿çšããŠåã¬ã³ãŒããå§çž®ããŸãã
ããã¯å®å šã«æ©èœãããªãã·ã§ã³ã§ãããç§ã¯å¥œãã§ã¯ãããŸããã ÐÐ»Ñ ÐŸÐ±ÐµÑпеÑÐµÐœÐžÑ Ð±ÐŸÐ»ÐµÐµ-ЌеМее пÑОлОÑМПгП ÑÑÐŸÐ²ÐœÑ ÑжаÑÐžÑ ÑлПваÑÑ ÐŽÐŸÐ»Ð¶ÐµÐœ бÑÑÑ Â«Ð·Ð°ÑПÑеМ» пПЎ кПМкÑеÑÐœÑе ЎаММÑе, лÑбПе ОзЌеМеМОе пÑОвеЎÑÑ Ðº ÑПЌÑ, ÑÑП ÑÑÐŸÐ²ÐµÐœÑ ÑжаÑÐžÑ ÐºÐ°ÑаÑÑÑПÑОÑеÑкО паЎаеÑ. Ðа, пÑПблеЌа ÑеÑаеÑÑÑ ÑПзЎаМОеЌ МПвПй веÑÑОО ÑлПваÑÑ, МП ÑÑП же Ð³ÐŸÐ»ÐŸÐ²ÐœÐ°Ñ Ð±ÐŸÐ»Ñ â МаЌ ÐœÑжМП бÑÐŽÐµÑ Ñ ÑаМОÑÑ Ð²Ñе веÑÑОО ÑлПваÑÑ;åãšã³ããªã§ã¯ãã©ã®ããŒãžã§ã³ã®èŸæžã§å§çž®ããããã瀺ãå¿ èŠããããŸã... - ãå€å
žçãªãã¢ã«ãŽãªãºã ã䜿çšããŠåã¬ã³ãŒããå§çž®ããŸãããä»ã®ã¬ã³ãŒãã¯ç¬ç«ããŠå§çž®ãããŸãã
æ€èšäžã®å§çž®ã¢ã«ãŽãªãºã ã¯ããã®ãµã€ãº (æ°åãã€ã) ã®ã¬ã³ãŒããåŠçããããã«èšèšãããŠããªããããå§çž®çã¯æããã« 1 æªæºã«ãªããŸã (ã€ãŸããå§çž®ã§ã¯ãªãããŒã¿éãå¢å ããŸã)ã - åèšé²åŸã«ãã©ãã·ã¥ãå®è¡ããŸãã
å€ãã®å§çž®ã©ã€ãã©ãªã¯ FLUSH ããµããŒãããŠããŸããããã¯ã³ãã³ã (ãŸãã¯å§çž®æé ã®ãã©ã¡ãŒã¿ãŒ) ã§ãããã¢ãŒã«ã€ããŒã¯ãããåä¿¡ãããšå§çž®ã¹ããªãŒã ã圢æãã埩å ã«äœ¿çšã§ããããã«ããŸãã ãã¹ãŠ ãã§ã«åä¿¡ããéå§çž®ããŒã¿ããããªã¢ããã°sync
ãã¡ã€ã«ã·ã¹ãã å ããŸãã¯commit
SQLã§ã
éèŠãªããšã¯ãåŸç¶ã®å§çž®æäœã§èç©ãããèŸæžã䜿çšã§ããããã«ãªããå§çž®çã以åã®ããŒãžã§ã³ã»ã©äœäžããªãããšã§ãã
ç§ã 3 çªç®ã®ãªãã·ã§ã³ãéžæããã®ã¯æããã ãšæããŸãã詳ããèŠãŠã¿ãŸãããã
èŠã€ãã£ã
èšäºã«åºã¥ããŠèãã¹ããå®è¡ããããŒãž ãµã€ãº 70Kb ã§å®éã®ããã€ã¹ãã 60 ã®ãã° ãšã³ããªãååŸããŸããã (ããŒãžãµã€ãºã«ã€ããŠã¯åŸã»ã©èª¬æããŸã) åãåã£ãïŒ
åæããŒã¿
å§çž® gzip -9 (ãã©ãã·ã¥ãªã)
Z_PARTIAL_FLUSH ã䜿çšãã zlib
Z_SYNC_FLUSH ã䜿çšãã zlib
ããªã¥ãŒã ãKB
1692
40
352
604
äžèŠãããšãFLUSH ã«ããã³ã¹ããé«ãããããã«èŠããŸãããå®éã«ã¯ããŸã£ããå§çž®ããªãããFLUSH 㧠(ãããŠéåžžã«å¹æçã«) å§çž®ããããã»ãšãã©éžæè¢ããããŸããã 70 äžä»¶ã®ã¬ã³ãŒããããããšãå¿ããŠã¯ãªããŸãããZ_PARTIAL_FLUSH ã«ãã£ãŠå°å ¥ãããåé·æ§ã¯ãã¬ã³ãŒããããããã 4 ïœ 5 ãã€ãã§ããå§çž®çã¯ã»ãŒ 5:1 ã§ããããšãå€æããããã¯éåžžã«åªããçµæã§ãã
é©ããããããŸããããZ_SYNC_FLUSH ã¯å®éã«ã¯ FLUSH ãå®è¡ããããå¹ççãªæ¹æ³ã§ãã
Z_SYNC_FLUSH ã䜿çšããå Žåãåãšã³ããªã®æåŸã® 4 ãã€ãã¯åžžã« 0x00ã0x00ã0xffã0xff ã«ãªããŸãããããŠãããããããã£ãŠããã°ãä¿åããå¿ èŠããªããããæçµçãªãµã€ãºã¯ããã 324Kb ã«ãªããŸãã
ç§ããªã³ã¯ããèšäºã«ã¯æ¬¡ã®ãããªèª¬æããããŸãã
äžèº«ã空ã®æ°ããã¿ã€ã 0 ãããã¯ãè¿œå ãããŸãã
äžèº«ã空ã®ã¿ã€ã 0 ãããã¯ã¯æ¬¡ã®ãã®ã§æ§æãããŸãã
- 3 ãããã®ãããã¯ããããŒã
- 0 ïœ 7 ãããã¯ãŒãã«çããããã€ã ã¢ã©ã€ã³ã¡ã³ããå®çŸããŸãã
- 00 ãã€ãã®ã·ãŒã±ã³ã¹ 00 XNUMX FF FFã
ç°¡åã«ãããããã«ãããã 4 ãã€ãã®åã®æåŸã®ãããã¯ã«ã¯ 3 ïœ 10 åã®ãŒã ãããããããŸãããã ããå®éã«ã¯å°ãªããšã 10 åã®ãŒã ããããããããšãããã£ãŠããŸãã
ãã®ãããªçãããŒã¿ ãããã¯ã¯ãéåžž (åžžã«?) ã¿ã€ã 1 ã®ããã㯠(åºå®ãããã¯) ã䜿çšããŠãšã³ã³ãŒããããããšãããããŸããããã®ãããã¯ã¯å¿ ã 7 ã€ã®ãŒã ãããã§çµãããåèš 10 ïœ 17 ã®ä¿èšŒããããŒã ãããã«ãªããŸã (æ®ãã¯çŽ50%ã®ç¢ºçã§ãŒãã«ãªããŸãïŒã
ãããã£ãŠããã¹ã ããŒã¿ã§ã¯ã100% ã®å Žåã0x00ã0x00ã0xffã0xff ã®åã«ãŒã ãã€ãã XNUMX ã€ãããXNUMX åã® XNUMX 以äžã®ã±ãŒã¹ã§ XNUMX ã€ã®ãŒã ãã€ãããããŸãã (ããããå®éã«ã¯ãã€ã㪠CBOR ã䜿çšããŠãããããã¹ã JSON ã䜿çšããå Žåãã¿ã€ã 2 ã®ããã㯠(ãã€ããã㯠ãããã¯) ãããäžè¬çã§ããã0x00ã0x00ã0xffã0xff ã®åã«è¿œå ã®ãŒã ãã€ãããªããããã¯ãçºçããŸã).
å©çšå¯èœãªãã¹ã ããŒã¿ã䜿çšãããšãåèšã§ 250Kb æªæºã®å§çž®ããŒã¿ã«åããããšãã§ããŸãã
ãããã調æŽããããšã§ãããå°ãç¯çŽã§ããŸããä»ã®ãšããããããã¯ã®çµããã«ããããã€ãã®ãŒããããã®ååšãç¡èŠããŸãããããã¯ã®å
é ã«ããããã€ãã®ããããå€æŽãããŸãã...
ãããããã®ãŸãŸã§ã¯ç¬èªã®ã¢ãŒã«ã€ããéçºããããšã«ãªããããããªãã®ã§ããããããšåŒ·ãæå¿ãæã¡ãŸããã
åèšãããšãæžã蟌ã¿ããšã« 3 ïœ 4 ãã€ããåä¿¡ãããã¹ã ããŒã¿ãããå§çž®ç㯠6:1 ãè¶ ããããšãå€æããŸãããæ£çŽã«èšããšããã®ãããªçµæã«ãªããšã¯äºæ³ããŠããŸããã§ãããç§ã®æèŠã§ã¯ã2:1 ãããåªãããã®ã¯ãã§ã«å§çž®ã®äœ¿çšãæ£åœåããçµæã«ãªã£ãŠããŸãã
ãã¹ãŠåé¡ãããŸããããzlib (deflate) ã¯äŸç¶ãšããŠå€é¢šã§ãåœç¶ã®ããšã§ãããããæ代é ãã®å§çž®ã¢ã«ãŽãªãºã ã§ããéå§çž®ããŒã¿ ã¹ããªãŒã ã®æåŸã® 32Kb ãèŸæžãšããŠäœ¿çšããããšããåãªãäºå®ã¯ãä»æ¥ã§ã¯å¥åŠã«èŠããŸã (ã€ãŸããããããŒã¿ ãããã¯ã 40Kb åã®å ¥åã¹ããªãŒã ã«ãã£ããã®ãšéåžžã«ãã䌌ãŠããå Žåããã®ããŒã¿ ãããã¯ã¯åã³ã¢ãŒã«ã€ãããå§ããŸã)以åã®åºæ¥äºã«ã€ããŠã¯èšåããŸããïŒãææ°ã®ãã¡ãã·ã§ããã«ãªã¢ãŒã«ã€ãã§ã¯ãèŸæžã®ãµã€ãºã¯ãããã€ãã§ã¯ãªãã¡ã¬ãã€ãã§æž¬å®ãããããšããããããŸãã
ããã§ç§ãã¡ã¯ã¢ãŒã«ã€ãã«é¢ããããç 究ãç¶ããŸãã
次ã«ãbzip2 ããã¹ãããŸãã (FLUSH ã䜿çšããªããšãã»ãŒ 100:1 ãšããçŽ æŽãããå§çž®çã瀺ãããããšãæãåºããŠãã ãã)ãæ®å¿µãªãããFLUSH ã§ã¯ããã©ãŒãã³ã¹ãéåžžã«æªããå§çž®ããŒã¿ã®ãµã€ãºãéå§çž®ããŒã¿ããã倧ããããšãå€æããŸããã
倱æã®çç±ã«ã€ããŠã®ç§ã®æšæž¬
Libbz2 ãæäŸãããã©ãã·ã¥ ãªãã·ã§ã³ã¯ XNUMX ã€ã ãã§ãèŸæžãã¯ãªã¢ããããã§ã (zlib ã® Z_FULL_FLUSH ã«äŒŒãŠããŸã)ããã以éã¯å¹æçãªå§çž®ã«ã€ããŠã¯èšåãããŠããŸããã
ãããŠæåŸã«ãã¹ããããã®ã¯ zstd ã§ããããã©ã¡ãŒã¿ã«å¿ããŠãgzip ã¬ãã«ã§å§çž®ããŸãããgzip ãããã¯ããã«é«éããããåªããå§çž®ãè¡ãããŸãã
æ®å¿µãªãããFLUSH ã§ã¯ããã©ãŒãã³ã¹ãããŸãè¯ããããŸããã§ãããå§çž®ããŒã¿ã®ãµã€ãºã¯çŽ 700Kb ã§ããã
Я
ç§ã¯ã¢ãŒã«ã€ããŒã䜿ã£ãå®éšããã®æç¹ã§äžæ¢ããããšã«ããŸãã (xzãlzipãlzoãlz4 㯠FLUSH ãªãã®ãã¹ã段éã§ã衚瀺ããããããã«ç¹æ®ãªå§çž®ã¢ã«ãŽãªãºã ã¯èæ ®ããŠããŸããã§ãã)ã
ã¢ãŒã«ã€ãã®åé¡ã«æ»ããŸãããã
2 çªç®ã®åé¡ (å€ã§ã¯ãªãé åºã®åé¡) ã¯ãå§çž®ããŒã¿ãåäžã®ã¹ããªãŒã ã§ããããã®äžã§åžžã«åã®ã»ã¯ã·ã§ã³ãžã®åç §ãååšããããšã§ãããããã£ãŠãå§çž®ããŒã¿ã®ã»ã¯ã·ã§ã³ãç Žæãããšãé¢é£ããéå§çž®ããŒã¿ã®ãããã¯ã ãã§ãªãããã以éã®ãããã¯ããã¹ãŠå€±ãããŸãã
ãã®åé¡ã解決ããã«ã¯ã次ã®ãããªã¢ãããŒãããããŸãã
- åé¡ã®çºçãé²æ¢ããŸããå§çž®ããŒã¿ã«åé·æ§ãè¿œå ããŸããããã«ããããšã©ãŒãç¹å®ããŠä¿®æ£ã§ããããã«ãªããŸããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
- åé¡ãçºçããå Žåã®åœ±é¿ãæå°éã«æãã
åããŒã¿ ãããã¯ãåå¥ã«å§çž®ã§ããããšã¯ãã§ã«è¿°ã¹ãŸããããåé¡ã¯èªç¶ã«è§£æ¶ãããŸã (4 ã€ã®ãããã¯ã®ããŒã¿ãæå·ãããšããã®ãããã¯ã®ããŒã¿ã®ã¿ã倱ãããŸã)ã ÐЎМакП, ÑÑП кÑайМОй ÑлÑÑай, пÑО кПÑПÑПЌ ÑжаÑОе ЎаММÑÑ Ð±ÑÐŽÐµÑ ÐœÐµÑÑÑекÑОвМП.éã®æ¥µç«¯: ãããã® XNUMXMB ããã¹ãŠ XNUMX ã€ã®ã¢ãŒã«ã€ããšããŠäœ¿çšãããšãåªããå§çž®ãå¯èœã«ãªããŸãããããŒã¿ç Žæã®å Žåã¯å£æ» çãªçµæã«ãªããŸãã
ã¯ããä¿¡é Œæ§ã®ç¹ã§åŠ¥åãå¿ èŠã§ããããããç§ãã¡ã¯ BER ãéåžžã«äœãã宣èšãããããŒã¿ä¿åæéã 20 幎ã§ããäžæ®çºæ§ã¡ã¢ãªçšã®ããŒã¿ä¿å圢åŒãéçºããŠããããšãå¿ããŠã¯ãªããŸããã
å®éšäžã«ããµã€ãºã 10 KB æªæºã®å§çž®ããŒã¿ã®ãããã¯ã§ãå€ããå°ãªããé¡èãªå§çž®ã¬ãã«ã®æ倱ãå§ãŸãããšãããããŸããã
䜿çšãããã¡ã¢ãªãããŒãžã³ã°ããããšåè¿°ããŸããããã1 ããŒãžãšå§çž®ããŒã¿ã® 1 ãããã¯ãã®å¯Ÿå¿é¢ä¿ã䜿çšãã¹ãã§ã¯ãªãçç±ã¯ããããŸããã
ã€ãŸããé©åãªæå°ããŒãž ãµã€ãºã¯ 16Kb (ãµãŒãã¹æ å ±çšã®äºçŽãå«ã) ã§ãããã ããããŒãž ãµã€ãºããã®ããã«å°ãããšãæ倧ã¬ã³ãŒã ãµã€ãºã«é倧ãªå¶éã課ããããŸãã
å§çž®åœ¢åŒã§æ°ãããã€ããè¶ ããã¬ã³ãŒãã¯ãŸã æåŸ ããŠããŸãããã32 ãããã€ãã®ããŒãž (ãããããšã«åèš 128 ããŒãž) ã䜿çšããããšã«ããŸããã
æŠèŠïŒ
- ããŒã¿ã¯ zlib (deflate) ã䜿çšããŠå§çž®ããŠä¿åããŸãã
- ãšã³ããªããšã« Z_SYNC_FLUSH ãèšå®ããŸãã
- å§çž®ãããã¬ã³ãŒãããšã«ãæ«å°Ÿã®ãã€ããããªãã³ã°ããŸãã (äŸ: 0x00ã0x00ã0xffã0xff);ããããŒã§ã¯ãåãåããã€ãæ°ã瀺ããŸãã
- ããŒã¿ã¯ 32Kb ããŒãžã«ä¿åãããŸããããŒãžå ã«ã¯å§çž®ããŒã¿ã®åäžã¹ããªãŒã ããããŸããåããŒãžã§åã³å§çž®ãéå§ããŸãã
ãããŠãå§çž®ãçµããåã«ãã¬ã³ãŒããããã®å§çž®ããŒã¿ã¯æ°ãã€ããããªããšããäºå®ã«æ³šæããŠããã ããããšæããŸãããã®ããããµãŒãã¹æ å ±ãèšåŒµãããªãããšãéåžžã«éèŠã§ãããããã§ã¯ãã¹ãŠã®ãã€ããéèŠã«ãªããŸãã
ããŒã¿ããããŒã®ä¿å
å¯å€é·ã®ã¬ã³ãŒãããããããã¬ã³ãŒãã®é 眮/å¢çãäœããã®æ¹æ³ã§æ±ºå®ããå¿ èŠããããŸãã
ç§ã¯ 3 ã€ã®ã¢ãããŒããç¥ã£ãŠããŸãã
- ãã¹ãŠã®ã¬ã³ãŒãã¯é£ç¶ã¹ããªãŒã ã«æ ŒçŽãããŸããæåã«é·ããå«ãã¬ã³ãŒã ããããŒãããã次ã«ã¬ã³ãŒãèªäœãæ ŒçŽãããŸãã
ãã®å®æœåœ¢æ ã§ã¯ãããããšããŒã¿ã®äž¡æ¹ãå¯å€é·ã«ããããšãã§ããã
åºæ¬çã«ãåžžã«äœ¿çšãããåäžãªã³ã¯ã®ãªã¹ããååŸããŸãã - ããããŒãšã¬ã³ãŒãèªäœã¯å¥ã®ã¹ããªãŒã ã«ä¿åãããŸãã
äžå®ã®é·ãã®ããããŒã䜿çšããããšã§ã1 ã€ã®ããããŒã®æå·ãä»ã®ããããŒã«åœ±é¿ãäžããªãããã«ããŸãã
åæ§ã®ã¢ãããŒãã¯ãããšãã°å€ãã®ãã¡ã€ã« ã·ã¹ãã ã§äœ¿çšãããŠããŸãã - ã¬ã³ãŒãã¯é£ç¶ã¹ããªãŒã ã«æ ŒçŽãããã¬ã³ãŒãã®å¢çã¯ç¹å®ã®ããŒã«ãŒ (ããŒã¿ ãããã¯å
ã§çŠæ¢ãããŠããæåãŸãã¯æåã®ã·ãŒã±ã³ã¹) ã«ãã£ãŠæ±ºå®ãããŸããã¬ã³ãŒãå
ã«ããŒã«ãŒãããå Žåã¯ããããäœããã®ã·ãŒã±ã³ã¹ã«çœ®ãæããŸã (ãšã¹ã±ãŒãããŸã)ã
åæ§ã®ã¢ãããŒãã¯ãããšãã° PPP ãããã³ã«ã§ã䜿çšãããŸãã
説æããŸãã
ãªãã·ã§ã³1ïŒ
ããã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ããã¬ã³ãŒãã®é·ãããããã°ã次ã®ããããŒã®ã¢ãã¬ã¹ãèšç®ã§ããŸãããããã£ãŠã0xff (空ãé å) ã§æºããããé åãŸãã¯ããŒãžã®çµããã«å°éãããŸã§ãèŠåºãã移åããŸãã
ãªãã·ã§ã³2ïŒ
ã¬ã³ãŒãé·ã¯å¯å€ã§ãããããããŒãžããšã«å¿
èŠãªã¬ã³ãŒã (ãããã£ãŠããããŒ) ã®æ°ãäºåã«èšãããšã¯ã§ããŸãããããããŒãšããŒã¿èªäœãå¥ã®ããŒãžã«åæ£ããããšãã§ããŸãããç§ã¯å¥ã®ã¢ãããŒãã奜ã¿ãŸããããããŒãšããŒã¿ã®äž¡æ¹ã 1 ã€ã®ããŒãžã«é
眮ããŸãããããã㌠(äžå®ãµã€ãº) ã¯ããŒãžã®å
é ããæ¥ãŠã (å¯å€é·ã®) ããŒã¿ã¯æåŸããæ¥ãŸãããããããäžèŽããããšããã« (æ°ãããšã³ããªãå
¥åããããã®ååãªç©ºãã¹ããŒã¹ããªããªã)ããã®ããŒãžã¯å®æãããšèŠãªãããŸãã
ãªãã·ã§ã³3ïŒ
ããããŒå
ã®ããŒã¿ã®äœçœ®ã«é¢ããé·ããŸãã¯ãã®ä»ã®æ
å ±ãä¿åããå¿
èŠã¯ãªããã¬ã³ãŒãã®å¢çã瀺ãããŒã«ãŒã§ååã§ãããã ããæžã蟌ã¿/èªã¿åãæã«ã¯ããŒã¿ãåŠçããå¿
èŠããããŸãã
ç§ã¯ 0xff ãããŒã«ãŒ (æ¶å»åŸã«ããŒãžãåãã) ãšããŠäœ¿çšããã®ã§ã空ãé åã¯ããŒã¿ãšããŠæ±ãããŸããã
æ¯èŒè¡šïŒ
ãªãã·ã§ã³1
ãªãã·ã§ã³2
ãªãã·ã§ã³3
蚱容誀差
-
+
+
ã³ã³ãã¯ãã
+
-
+
å®è£
ã®è€éã
*
**
**
ãªãã·ã§ã³ 1 ã«ã¯èŽåœçãªæ¬ é¥ããããŸããããããŒã®ãããããç ŽæãããšãåŸç¶ã®ãã§ãŒã³å
šäœãç Žå£ãããŸããæ®ãã®ãªãã·ã§ã³ã䜿çšãããšã倧èŠæš¡ãªæå·ãçºçããå Žåã§ãäžéšã®ããŒã¿ãå埩ã§ããŸãã
ãã ããããã§ã¯ãããŒã¿ãå§çž®åœ¢åŒã§ä¿åããããšã«ãããããã¬ã³ãŒãããå£ãããåŸã¯ããŒãžäžã®ãã¹ãŠã®ããŒã¿ã倱ããããããããŒãã«ã«ãã€ãã¹ããã£ãŠããããŒã¿ã¯å€±ãããŸããããããèæ
®ã«å
¥ããŠãã ããã
ã³ã³ãã¯ããïŒ
- æåã®ãªãã·ã§ã³ã§ã¯ãããããŒã«é·ãã®ã¿ãæ ŒçŽããå¿ èŠããããŸããå¯å€é·ã®æŽæ°ã䜿çšããå Žåãã»ãšãã©ã®å Žåã1 ãã€ãã§æžã¿ãŸãã
- 4 çªç®ã®ãªãã·ã§ã³ã§ã¯ãéå§ã¢ãã¬ã¹ãšé·ããä¿åããå¿ èŠããããŸããã¬ã³ãŒãã¯äžå®ã®ãµã€ãºã§ããå¿ èŠããããã¬ã³ãŒãããšã« XNUMX ãã€ããšèŠç©ããããŸã (ãªãã»ããã« XNUMX ãã€ããé·ãã« XNUMX ãã€ã)ã
- ÑÑеÑÑÐµÐŒÑ Ð²Ð°ÑОаМÑÑ ÐŽÐŸÑÑаÑПÑМП вÑегП ПЎМПгП ÑОЌвПла ÐŽÐ»Ñ ÐŸÐ±ÐŸÐ·ÐœÐ°ÑÐµÐœÐžÑ ÐœÐ°Ñала запОÑО, плÑÑ ÑаЌа запОÑÑ ÐžÐ·-за ÑкÑаМОÑÐŸÐ²Ð°ÐœÐžÑ Ð²ÑÑаÑÑÐµÑ ÐœÐ° 1-2%.äžè¬ã«ãæåã®ãªãã·ã§ã³ãšã»ãŒåçã§ãã
åœåãç§ã¯ 2 çªç®ã®ãªãã·ã§ã³ãäž»ãªãªãã·ã§ã³ãšããŠæ€èšããŸãã (å®è£ ãŸã§æžããŸãã)ãæçµçã«å§çž®ã䜿çšããããšã«æ±ºãããšãã«ã®ã¿ããããæŸæ£ããŸããã
ãããããã€ãç§ãåããããªãªãã·ã§ã³ã䜿ãããšã«ãªãã§ããããããšãã°ãå°çãšç«æã®éãèªè¡ããè¹ã®ããŒã¿ ã¹ãã¬ãŒãžãæ±ãå¿ èŠãããå Žåãä¿¡é Œæ§ãå®å®æŸå°ç·ãªã©ã«é¢ããŠãŸã£ããç°ãªãèŠä»¶ãååšããŸãã
3 çªç®ã®ãªãã·ã§ã³ã«ã€ããŠã¯ãã·ãŒã«ããããã£ãããããã»ã¹å ã§é·ããå€æŽãããããã®ã奜ãã§ã¯ãªããããå®è£ ã®é£ãããçç±ã«æ 2 ã€ãšããŸãããã¯ããããããç§ã¯åèŠãæã£ãŠãããããããŸããããã³ãŒããæžããªããã°ãªããŸããããªãæ°ã«å ¥ããªãããšãèªåã«åŒ·å¶ããå¿ èŠããããŸããã
æŠèŠïŒ å¹çæ§ãšå®è£ ã®å®¹æãã®ããããé·ãã®ããããã㌠- å¯å€é·ã®ããŒã¿ããšãããã§ãŒã³ã®åœ¢åŒã®ã¹ãã¬ãŒãž ãªãã·ã§ã³ãéžæããŸãã
ããããã£ãŒã«ãã䜿çšããŠæžã蟌ã¿æäœã®æåãç£èŠãã
ã©ãã§ãã®ã¢ã€ãã¢ãæãã€ããã®ãä»ã§ã¯èŠããŠããŸãããã次ã®ãããªæãã§ãã
åãšã³ããªã«å¯ŸããŠããã©ã°ãæ ŒçŽããããã«ããã€ãã®ããããå²ãåœãŠãŸãã
åã«è¿°ã¹ãããã«ãæ¶å»åŸã¯ãã¹ãŠã®ãããã 1 ã§åãããã1 ã 0 ã«å€æŽããããšã¯ã§ããŸããããã®éã¯ã§ããŸããã ãããã£ãŠãããã©ã°ãèšå®ãããŠããªããå Žå㯠1 ã䜿çšããããã©ã°ãèšå®ãããŠãããå Žå㯠0 ã䜿çšããŸãã
å¯å€é·ã¬ã³ãŒãããã©ãã·ã¥ã«å ¥ãããšæ¬¡ã®ããã«ãªããŸãã
- ãé·ãã®èšé²ãéå§ãããŸããããã©ã°ãèšå®ããŸãã
- é·ããèšé²ããŸãã
- ãããŒã¿èšé²ãéå§ãããŸããããã©ã°ãèšå®ããŸãã
- ç§ãã¡ã¯ããŒã¿ãèšé²ããŸãã
- ãé²ç»çµäºããã©ã°ãç«ãŠãŸãã
ããã«ãããšã©ãŒçºçããã©ã°ããããåèš 4 ãããã®ãã©ã°ã«ãªããŸãã
ãã®å Žåãã1111ã - é²é³ãéå§ãããŠããªããã1000ã - é²é³ãæåãããšãã XNUMX ã€ã®å®å®ç¶æ ããããŸããèšé²ããã»ã¹ãäºæããäžæãããå Žåã¯ãäžéç¶æ ãåãåãããããæ€åºããŠåŠçã§ããŸãã
ãã®ã¢ãããŒãã¯èå³æ·±ããã®ã§ãããçªç¶ã®åé»ãåæ§ã®é害ããä¿è·ããã ãã§ãããããã¯ãã¡ããéèŠã§ããããããé害ã®å¯èœæ§ãããå¯äžã® (ãŸãã¯äž»ãª) åå ãšããããã§ã¯ãããŸããã
æŠèŠïŒ è¯ã解決çãæ¢ããŠå ã«é²ã¿ãŸãããã
ãã§ãã¯ãµã
ãã§ãã¯ãµã ã䜿çšãããšãæžã蟌ãŸããã¹ãå 容ãæ£ç¢ºã«èªã¿åã£ãŠããããšã (劥åœãªç¢ºçã§) 確èªããããšãã§ããŸãããŸããäžã§èª¬æããããã ãã£ãŒã«ããšã¯ç°ãªããåžžã«æ©èœããŸãã
äžã§èª¬æããæœåšçãªåé¡ã®åå ã®ãªã¹ããèæ ®ãããšããã§ãã¯ãµã ã¯ãšã©ãŒã®åå ã«é¢ä¿ãªããšã©ãŒãèªèã§ããŸãã (ãããããæªæã®ãããšã€ãªã¢ã³ã¯é€ããŸã - 圌ãããã§ãã¯ãµã ãåœé ããããšãã§ããŸã).
ãããã£ãŠãããŒã¿ãæãªãããŠããªãããšã確èªããããšãç®çã§ããå Žåããã§ãã¯ãµã ã¯çŽ æŽãããã¢ã€ãã¢ã§ãã
ãã§ãã¯ãµã ãèšç®ããã¢ã«ãŽãªãºã ã®éžæ (CRC) ã«ã¯äœã®çåãçããŸããã§ããã С ПЎМПй ÑÑПÑПМÑ, ЌаÑеЌаÑОÑеÑкОе ÑвПйÑÑва пПзвПлÑÑÑ Ð² 100% лПвОÑÑ ÐŸÑОбкО МекПÑПÑÑÑ ÑОпПв, Ñ ÐŽÑÑгПй â Ма ÑлÑÑайМÑÑ ÐŽÐ°ÐœÐœÑÑ ÐŸÐ±ÑÑМП ÑÑÐŸÑ Ð°Ð»Ð³ÐŸÑОÑÐŒ пПказÑÐ²Ð°ÐµÑ Ð²ÐµÑПÑÑМПÑÑÑ ÐºÐŸÐ»Ð»ÐžÐ·ÐžÐ¹ Ме ÑОлÑМП бПлÑÑе ÑеПÑеÑОÑеÑкПгП пÑеЎела ãããã¯æéã®ã¢ã«ãŽãªãºã ã§ã¯ãªããããããŸããããè¡çªã®æ°ã®ç¹ã§åžžã«æå°ã§ããããã§ããããŸããããéåžžã«éèŠãªæ§è³ªãæã£ãŠããŸããç§ãééãããã¹ãã§ã¯ãæããã«å€±æãããã¿ãŒã³ã¯ãããŸããã§ããããã®å Žåãå®å®æ§ãäž»ãªå質ã§ãã
äœç©èª¿æ»ã®äŸ:
ãã ãããã§ãã¯ãµã ãéžæããã¿ã¹ã¯ã¯å®äºããŠããŸãããCRC ã¯ãã§ãã¯ãµã ã®ãã¡ããªãŒå šäœã§ããé·ãã決å®ããŠãããå€é åŒãéžæããå¿ èŠããããŸãã
ãã§ãã¯ãµã ã®é·ãã®éžæã¯ãäžèŠããããã«èŠããã»ã©ç°¡åãªåé¡ã§ã¯ãããŸããã
説æããŸããã:
åãã€ãã®ãšã©ãŒã®ç¢ºçã調ã¹ãŠã¿ãŸããã çæ³çãªãã§ãã¯ãµã ãæ±ããŠã100 äžã¬ã³ãŒããããã®å¹³åãšã©ãŒæ°ãèšç®ããŠã¿ãŸãããã
ããŒã¿ããã€ã
ãã§ãã¯ãµã ããã€ã
æ€åºãããªããšã©ãŒ
誀ã£ããšã©ãŒæ€åº
åèšèª€æ€ç¥æ°
1
0
1000
0
1000
1
1
4
999
1003
1
2
â0
1997
1997
1
4
â0
3990
3990
10
0
9955
0
9955
10
1
39
990
1029
10
2
â0
1979
1979
10
4
â0
3954
3954
1000
0
632305
0
632305
1000
1
2470
368
2838
1000
2
10
735
745
1000
4
â0
1469
1469
ãã¹ãŠãåçŽã§ããããã«æããŸããä¿è·ãããããŒã¿ã®é·ãã«å¿ããŠã誀ã£ãæ£ã®å€ãæå°éã«ãªããã§ãã¯ãµã ã®é·ããéžæããŸãããããŠããã®ç§èš£ã¯ããã°ã®äžã«ãããŸãã
ÐЎМакП, Ñ ÐºÐŸÑПÑкОЌО кПМÑÑПлÑÐœÑЌО ÑÑЌЌаЌО Ð²ÐŸÐ·ÐœÐžÐºÐ°ÐµÑ Ð¿ÑПблеЌа: ПМО, Ñ
ПÑÑ Ðž Ñ
ПÑПÑП ПбМаÑÑжОваÑÑ ÐµÐŽÐžÐœÐžÑÐœÑе бОÑПвÑе ПÑОбкО, ЌПгÑÑ Ñ ÐŽÐŸÑÑаÑПÑМП бПлÑÑПй веÑПÑÑМПÑÑÑÑ Ð¿ÑОМÑÑÑ Ð·Ð° веÑÐœÑе ÑПвеÑÑеММП ÑлÑÑайМÑе ЎаММÑе.ããã¬ã«é¢ããèšäºããã§ã«ãããŸããã
ãããã£ãŠãã©ã³ãã ãªãã§ãã¯ãµã ã®äžèŽãã»ãŒäžå¯èœã«ããã«ã¯ã32 ããã以äžã®é·ãã®ãã§ãã¯ãµã ã䜿çšããå¿ èŠããããŸãã (64 ããããè¶ ããé·ãã®å Žåã¯ãéåžžãæå·åããã·ã¥é¢æ°ã䜿çšãããŸã).
ã¹ããŒã¹ãå¿ ãç¯çŽããå¿ èŠããããšä»¥åã«æžããŸããããããã§ã 32 ãããã®ãã§ãã¯ãµã ã䜿çšããŸã (16 ãããã§ã¯ååã§ã¯ãªããè¡çªã®ç¢ºç㯠0.01% ãè¶ ããŸãããŸãã24 ãããã䜿çšããŸã)ãããã«ããããã«ãããªããšèšãïŒã
ããã§åè«ãçãããããããŸãããäžåºŠã« 4 ãã€ããäžããããã«ãå§çž®ãéžæãããšãã«ãã¹ãŠã®ãã€ããä¿åããã®ã§ãããã?å§çž®ããããã§ãã¯ãµã ãä»å ãããããªãæ¹ãè¯ãã®ã§ã¯ãªãã§ããããïŒãã¡ããããã§ã¯ãããŸãããå§çž®ã¯ãããŸãã æå³ã§ã¯ãããŸãããæŽåæ§ãã§ãã¯ã¯å¿ èŠãªããšããããšã§ãã
å€é
åŒãéžæãããšãã¯ãè»èŒªã®åçºæã§ã¯ãªããçŸåšäººæ°ã®ãã CRC-32C ãæ¡çšããŸãã
ãã®ã³ãŒãã¯ãæ倧 6 ãã€ãã®ãã±ããã® 22 ããã ãšã©ãŒ (ããããåœç€Ÿã«ãšã£ãŠæãäžè¬çãªã±ãŒã¹)ãæ倧 4 ãã€ãã®ãã±ããã® 655 ããã ãšã©ãŒ (ãããåœç€Ÿã«ãšã£ãŠäžè¬çãªã±ãŒã¹)ããã±ããã® 2 ããããŸãã¯ä»»æã®å¥æ°ã®ããã ãšã©ãŒãæ€åºããŸãã of any reasonable length.
詳现ã«èå³ã®ããæ¹ãããã£ããããŸããã
Ð
ãŸããããŒã¿ã¯å§çž®ãããŠãããããå§çž®ããŒã¿ãšéå§çž®ããŒã¿ã®ãã§ãã¯ãµã ãèšç®ããå¿ èŠãããã?ãšããçåãçããŸãã
éå§çž®ããŒã¿ã®ãã§ãã¯ãµã ã®èšç®ãæ¯æããè°è«:
- æçµçã«ã¯ããŒã¿ ã¹ãã¬ãŒãžã®å®å šæ§ããã§ãã¯ããå¿ èŠããããããçŽæ¥ãã§ãã¯ããŸã (åæã«ãå§çž®/解åã®å®è£ ã§èµ·ããåŸããšã©ãŒãã¡ã¢ãªã®ç Žæãªã©ã«ããæå·ããã§ãã¯ãããŸã)ã
- zlib ã® deflate ã¢ã«ãŽãªãºã ã¯ããªãæçããå®è£ ã«ãªã£ãŠããã ãããªã ãæ²ãã£ããå ¥åããŒã¿ãå«ãŸããå¯èœæ§ããããããã«ãå€ãã®å Žåãå ¥åã¹ããªãŒã å ã®ãšã©ãŒãåå¥ã«æ€åºã§ããããããšã©ãŒãæ€åºãããªãå šäœçãªç¢ºçãæžå°ããŸã (çãã¬ã³ãŒãå ã® 1 ããããå転ããŠãã¹ããå®è¡ããzlib ããšã©ãŒãæ€åºããŸãã)ã±ãŒã¹ã®çŽ 3 åã® 1 ã§ïŒã
éå§çž®ããŒã¿ã®ãã§ãã¯ãµã ã®èšç®ã«å¯Ÿããåè«:
- CRC ã¯ããã©ãã·ã¥ ã¡ã¢ãªã®ç¹åŸŽã§ããæ°ããã ãšã©ãŒã«ç¹åããŠã調æŽããããŠããŸã (å§çž®ã¹ããªãŒã å ã®ããã ãšã©ãŒã¯åºåã¹ããªãŒã ã«å€§ããªå€åãåŒãèµ·ããå¯èœæ§ããããçŽç²ã«çè«çã«ã¯è¡çªãããã£ãããã§ããŸã)ã
- ç§ã¯å£ããŠããå¯èœæ§ã®ããããŒã¿ã解åããã°ã©ã ã«æž¡ããšããèããããŸã奜ãã§ã¯ãããŸããã
ç¥ãã 圌ãã©ãåå¿ãããã
ãã®ãããžã§ã¯ãã§ã¯ãéå§çž®ããŒã¿ã®ãã§ãã¯ãµã ãä¿åãããšããäžè¬ã«åãå ¥ããããŠããæ £è¡ããéžè±ããããšã«ããŸããã
æŠèŠïŒ CRC-32C ã䜿çšãããã©ãã·ã¥ã«æžã蟌ãŸãã圢åŒã®ããŒã¿ (å§çž®åŸ) ãããã§ãã¯ãµã ãèšç®ããŸãã
åé·æ§
ãã¡ãããåé·ã³ãŒãã£ã³ã°ã䜿çšããŠãããŒã¿æ倱ããªããªãããã§ã¯ãããŸããããå埩äžèœãªããŒã¿æ倱ã®å¯èœæ§ãå€§å¹ ã« (å€ãã®å Žåãäœæ¡ã) æžããããšãã§ããŸãã
ããŸããŸãªçš®é¡ã®åé·æ§ã䜿çšããŠãšã©ãŒãä¿®æ£ã§ããŸãã
ããã³ã° ã³ãŒãã¯ã·ã³ã°ã« ããã ãšã©ãŒãä¿®æ£ã§ãããªãŒããœãã¢ã³æåã³ãŒãããã§ãã¯ãµã ãšçµã¿åãããããŒã¿ã®è€æ°ã®ã³ããŒããŸã㯠RAID-6 ãªã©ã®ãšã³ã³ãŒãã£ã³ã°ã¯ã倧èŠæš¡ãªç Žæãçºçããå Žåã§ãããŒã¿ãå埩ããã®ã«åœ¹ç«ã¡ãŸãã
åœåãç§ã¯ãšã©ãŒèæ§ã®ããã³ãŒãã£ã³ã°ã®æ®åã«å°œåããŠããŸãããããŸãã©ã®ãããªãšã©ãŒãã身ãå®ãããããèããŠãããã³ãŒãã£ã³ã°ãéžæããå¿
èŠãããããšã«æ°ã¥ããŸããã
ãšã©ãŒã¯ã§ããã ãæ©ãæ€åºããå¿ èŠããããšåè¿°ããŸãããã©ã®æç¹ã§ãšã©ãŒãçºçããå¯èœæ§ããããŸãã?
- é²é³ãå®äºããŠããªãïŒé²é³æã«äœããã®çç±ã§é»æºãåãããRaspberry ãããªãŒãºããã...ïŒ
æ²ããããšã«ããã®ãããªãšã©ãŒãçºçããå Žåãæ®ãã®ã¯ç¡å¹ãªã¬ã³ãŒããç¡èŠããããŒã¿ã倱ããããšèããããšã ãã§ãã - æžã蟌ã¿ãšã©ãŒïŒäœããã®çç±ã§ããã©ãã·ã¥ã¡ã¢ãªã«æžã蟌ãŸããå
容ãšæžã蟌ãŸããå
容ãç°ãªãïŒ
èšé²çŽåŸã«ãã¹ãèªã¿åããå®è¡ãããšããã®ãããªãšã©ãŒãããã«æ€åºã§ããŸãã - ä¿åäžã®ã¡ã¢ãªå ã®ããŒã¿ã®æªã¿ã
- èªã¿åããšã©ãŒ
ãã§ãã¯ãµã ãäžèŽããªãå Žåã¯ãèªã¿åããæ°åç¹°ãè¿ãã ãã§ä¿®æ£ã§ããŸãã
ã€ãŸãã3 çªç®ã®ã¿ã€ãã®ãšã©ãŒ (ä¿åäžã®ããŒã¿ã®èªç¶ç Žæ) ã ãã¯ããšã©ãŒèæ§ã®ããã³ãŒãã£ã³ã°ãªãã§ã¯èšæ£ã§ããŸããããã®ãããªãšã©ãŒãçºçããå¯èœæ§ã¯ãŸã éåžžã«äœãããã§ãã
æŠèŠïŒ åé·ã³ãŒãã£ã³ã°ãæŸæ£ããããšã決å®ãããŸããããéçšã§ãã®æ±ºå®ã®èª€ãã瀺ãããå Žåã¯ãåé¡ã®æ€èšã«æ»ããŸãïŒå€±æã«é¢ããçµ±èšããã§ã«èç©ãããŠãããããæé©ãªã¿ã€ãã®ã³ãŒãã£ã³ã°ãéžæã§ããŸãïŒã
ä»ã®
ãã¡ãããèšäºã®åœ¢åŒäžãããããéšåãæ£åœåããããšã¯ã§ããŸããã (ããäœåãå°œãã), ããã§ãå ã»ã©è§Šããªãã£ãããã€ãã®ç¹ã«ã€ããŠç°¡åã«èª¬æããŸãã
- ãã¹ãŠã®ããŒãžããå¹³çãã«ããããšã決å®ãããŸãã
ã€ãŸããã¡ã¿ããŒã¿ãå«ãç¹å¥ãªããŒãžãåå¥ã®ã¹ã¬ãããªã©ã¯ååšããã代ããã«åäžã®ã¹ã¬ããããã¹ãŠã®ããŒãžãé çªã«æžãæããŸãã
ããã«ãããããŒãžã®ç£šèãåçã«ãªããåäžé害ç¹ããªããªãããšãŠãæ°ã«å ¥ã£ãŠããŸãã - 圢åŒã®ããŒãžã§ã³ç®¡çãæäŸããããšãäžå¯æ¬ ã§ãã
ããããŒã«ããŒãžã§ã³çªå·ã®ãªããã©ãŒãããã¯éªæªã§ãã
ç¹å®ã®ããžã㯠ãã³ã㌠(眲å) ãæã€ãã£ãŒã«ããããŒãž ããããŒã«è¿œå ããã ãã§ååã§ããããã¯ã䜿çšãããŠãã圢åŒã®ããŒãžã§ã³ã瀺ããŸãã (å®éã«ã¯åæ°åãååšããªããšæããŸã); - ã¬ã³ãŒã (å€æ°ãããŸã) ã«ã¯å¯å€é·ããããŒã䜿çšããã»ãšãã©ã®å Žåé·ãã 1 ãã€ãã«ãªãããã«ããŸãã
- å§çž®ã¬ã³ãŒãã®ããããŒã®é·ããšããªãã³ã°ãããéšåã®é·ãããšã³ã³ãŒãããã«ã¯ãå¯å€é·ãã€ã㪠ã³ãŒãã䜿çšããŸãã
ãšãŠãå©ãããŸãã
ããŒã¿ä¿å圢åŒã®èª¬æ
ãã€ããªãŒããŒ
0 ãã€ããã倧ãããã£ãŒã«ãã¯ãããã° ãšã³ãã£ã¢ã³åœ¢åŒ (ãããã¯ãŒã¯ ãã€ã ãªãŒããŒ) ã§ä¿åãããŸããã€ãŸãã1234x0 㯠12x0ã34xXNUMX ãšããŠæžã蟌ãŸããŸãã
ããŒãžããŒã·ã§ã³
ãã¹ãŠã®ãã©ãã·ã¥ ã¡ã¢ãªã¯åããµã€ãºã®ããŒãžã«åå²ãããŸãã
ããã©ã«ãã®ããŒãž ãµã€ãºã¯ 32Kb ã§ãããã¡ã¢ãª ãããã®åèšãµã€ãºã® 1/4 ãè¶ ããŸãã (4MB ãããã®å Žåã128 ããŒãžãååŸãããŸã)ã
åããŒãžã¯ãä»ã®ããŒãžãšã¯ç¬ç«ããŠããŒã¿ãæ ŒçŽããŸã (ã€ãŸããããããŒãžã®ããŒã¿ã¯å¥ã®ããŒãžã®ããŒã¿ãåç §ããŸãã)ã
ãã¹ãŠã®ããŒãžã«ã¯ãçªå· 0 ããå§ãŸãèªç¶é åº (ã¢ãã¬ã¹ã®æé ) ã§çªå·ãä»ããããŸã (ããŒãž 0 ã¯ã¢ãã¬ã¹ 32 ããå§ãŸããæåã®ããŒãžã¯ 64Kb ããå§ãŸããXNUMX çªç®ã®ããŒãžã¯ XNUMXKb ããå§ãŸããŸã)ã
ã¡ã¢ãª ãããã¯åŸªç°ãããã¡ (ãªã³ã° ãããã¡) ãšããŠäœ¿çšãããŸããã€ãŸããæåã«ããŒãžçªå· 0 ã«æžã蟌ã¿ã次ã«ããŒãžçªå· 1 ã«æžã蟌ã¿ãè¡ãããæåŸã®ããŒãžããã£ã±ãã«ãªããšãæ°ãããµã€ã¯ã«ãéå§ãããããŒãž XNUMX ããèšé²ãç¶ç¶ãããŸãã ã
ããŒãžå
ããŒãžã®å
é ã«ã¯ 4 ãã€ãã®ããŒãž ããããŒãæ ŒçŽããã次ã«ããã㌠ãã§ãã¯ãµã (CRC-32C) ãæ ŒçŽããããã®åŸãã¬ã³ãŒãããããããŒãããŒã¿ããã§ãã¯ãµã ã圢åŒã§æ ŒçŽãããŸãã
ããŒãž ã¿ã€ãã« (å³ã®æ±ããç·è²) ã¯æ¬¡ã®å 容ã§æ§æãããŸãã
- 2 ãã€ãã®ããžã㯠ãã³ã㌠ãã£ãŒã«ã (ãã©ãŒããã ããŒãžã§ã³ã®èšå·ã§ããããŸã)
圢åŒã®çŸåšã®ããŒãžã§ã³ã§ã¯ã次ã®ããã«èšç®ãããŸãã0xed00 â ÐœÐŸÐŒÐµÑ ÑÑÑаМОÑÑ
; - 2ãã€ãã«ãŠã³ã¿ãããŒãžããŒãžã§ã³ãïŒã¡ã¢ãªæžãæããµã€ã¯ã«æ°ïŒã
ããŒãžäžã®ãšã³ããªã¯å§çž®åœ¢åŒã§ä¿åãããŸã (deflate ã¢ã«ãŽãªãºã ã䜿çšãããŸã)ã 1 ããŒãžäžã®ãã¹ãŠã®ã¬ã³ãŒã㯠1 ã€ã®ã¹ã¬ããã§å§çž®ãã (å ±éã®èŸæžã䜿çšãããŸã)ãæ°ããããŒãžããšã«å§çž®ãæ°ãã«éå§ãããŸããã€ãŸããã¬ã³ãŒãã解åããã«ã¯ããã®ããŒãžã®ä»¥åã®ãã¹ãŠã®ã¬ã³ãŒã (ããã³ãã®ããŒãžã®ã¿) ãå¿ èŠã§ãã
åã¬ã³ãŒã㯠Z_SYNC_FLUSH ãã©ã°ã䜿çšããŠå§çž®ãããå§çž®ã¹ããªãŒã ã®æåŸã«ã¯ 4 ãã€ã 0x00ã0x00ã0xffã0xff ãååšãããã®åã«ããã« XNUMX ãã€ããŸã㯠XNUMX ãã€ãã®ãŒã ãã€ããç¶ãå¯èœæ§ããããŸãã
ãã©ãã·ã¥ ã¡ã¢ãªã«æžã蟌ããšãã«ããã®ã·ãŒã±ã³ã¹ (4ã5ããŸã㯠6 ãã€ãé·) ãç Žæ£ããŸãã
ã¬ã³ãŒã ããããŒã¯ 1ã2ããŸã㯠3 ãã€ãã§ã次ã®ãã®ãæ ŒçŽããŸãã
- ã¬ã³ãŒãã®ã¿ã€ãã瀺ã 0 ããã (T): 1 - ã³ã³ããã¹ããXNUMX - ãã°ã
- 1 ïœ 7 ãããã®å¯å€é·ãã£ãŒã«ã (S)ãå§çž®è§£é€ã®ããã«ã¬ã³ãŒãã«è¿œå ããå¿ èŠãããããããŒãšãããŒã«ãã®é·ããå®çŸ©ããŸãã
- ã¬ã³ãŒãé· (L)ã
Så€è¡šïŒ
S
ããããŒã®é·ãããã€ãæ°
æžã蟌ã¿æã«ç Žæ£ããã€ã
0
1
5ïŒ00 00 00 ff ff
)
10
1
6ïŒ00 00 00 00 ff ff
)
110
2
4ïŒ00 00 ff ff
)
1110
2
5ïŒ00 00 00 ff ff
)
11110
2
6ïŒ00 00 00 00 ff ff
)
1111100
3
4ïŒ00 00 ff ff
)
1111101
3
5ïŒ00 00 00 ff ff
)
1111110
3
6ïŒ00 00 00 00 ff ff
)
説æããŠã¿ãŸããããã©ã®çšåºŠæ確ã«å€æãããã¯ããããŸããã
ããã§ãé»è²ã¯ T ãã£ãŒã«ããçœã¯ S ãã£ãŒã«ããç·ã® L (ãã€ãåäœã®å§çž®ããŒã¿ã®é·ã)ãéã¯å§çž®ããŒã¿ãèµ€ã¯ãã©ãã·ã¥ ã¡ã¢ãªã«æžã蟌ãŸããªãå§çž®ããŒã¿ã®æåŸã®ãã€ãã瀺ããŸãã
ãããã£ãŠãæãäžè¬çãªé·ã (å§çž®åœ¢åŒã§æ倧 63+5 ãã€ã) ã®ã¬ã³ãŒã ããããŒã XNUMX ãã€ãã§æžã蟌ãããšãã§ããŸãã
åã¬ã³ãŒãã®åŸã«ââ CRC-32C ãã§ãã¯ãµã ãä¿åãããåã®ãã§ãã¯ãµã ã®å転å€ãåæå€ (init) ãšããŠäœ¿çšãããŸãã
CRC ã«ã¯ãæéããšããç¹æ§ãããã次ã®åŒãæ©èœããŸã (ããã»ã¹å
ã§ãã©ã¹ãŸãã¯ãã€ãã¹ã®ãããå転ãè¡ãããŸã)ã .
ã€ãŸããå®éã«ã¯ããã®ããŒãžã®ããããŒãšããŒã¿ã®åã®ãã¹ãŠã®ãã€ãã® CRC ãèšç®ããŸãã
ãã§ãã¯ãµã ã®ããåŸã«ã¯ã次ã®ã¬ã³ãŒãã®ããããŒããããŸãã
ããããŒã¯ããã®æåã®ãã€ããåžžã« 0x00 ãš 0xff ãšã¯ç°ãªãããã«èšèšãããŠããŸã (ããããŒã®æåã®ãã€ãã®ä»£ããã« 0xff ãèŠã€ãã£ãå Žåãããã¯ãããæªäœ¿çšé åã§ããããšãæå³ããŸãã0x00 ã¯ãšã©ãŒã瀺ããŸã)ã
ã¢ã«ãŽãªãºã ã®äŸ
ãã©ãã·ã¥ã¡ã¢ãªããã®èªã¿åºã
ãã¹ãŠã®èªã¿åãã«ã¯ãã§ãã¯ãµã ãã§ãã¯ãå«ãŸããŸãã
ãã§ãã¯ãµã ãäžèŽããªãå Žåã¯ãæ£ããããŒã¿ãèªã¿åãããã«èªã¿åããæ°åç¹°ãè¿ãããŸãã
(ããã¯åœç¶ã®ããšã§ãããLinux 㯠NOR ãã©ãã·ã¥ããã®èªã¿åãããã£ãã·ã¥ããŸãã (ãã¹ãæžã¿)
ãã©ãã·ã¥ã¡ã¢ãªãžã®æžã蟌ã¿
ããŒã¿ãèšé²ããŸãã
èªãã§ã¿ãŸãããã
èªã¿åã£ãããŒã¿ãæžã蟌ãŸããããŒã¿ãšäžèŽããªãå Žåã¯ãé åããŒãã§åããŠãšã©ãŒãéç¥ããŸãã
æ°ãããã€ã¯ãåè·¯ã®åäœæºå
åæåã§ã¯ãããŒãžã§ã³ 1 ã®ããããŒãæåã® (ãŸãã¯ãŒãã®) ããŒãžã«æžã蟌ãŸããŸãã
ãã®åŸãåæã³ã³ããã¹ãããã®ããŒãžã«æžã蟌ãŸããŸã (ãã·ã³ã® UUID ãšããã©ã«ãèšå®ãå«ãŸããŸã)ã
以äžã§ããã©ãã·ã¥ã¡ã¢ãªã䜿çšããæºåãæŽããŸããã
ãã·ã³ãããŒããã
ããŒãæã«ãåããŒãžã®æåã® 8 ãã€ã (ããã㌠+ CRC) ãèªã¿åãããäžæãªããžã㯠ãã³ããŒãŸãã¯äžæ£ãª CRC ãæã€ããŒãžã¯ç¡èŠãããŸãã
ãæ£ãããããŒãžããæ倧ããŒãžã§ã³ã®ããŒãžãéžæããããã®äžããæ倧ã®çªå·ã®ããŒãžãååŸãããŸãã
æåã®ã¬ã³ãŒããèªã¿åãããCRC ã®æ£ç¢ºããšãã³ã³ããã¹ãããã©ã°ã®ååšããã§ãã¯ãããŸãããã¹ãŠãæ£åžžã§ããã°ããã®ããŒãžã¯ææ°ã®ãã®ãšã¿ãªãããŸããããã§ãªãå Žåã¯ããã©ã€ããããŒãžãèŠã€ãããŸã§ãåã®ããŒãžã«ããŒã«ããã¯ããŸãã
ãããŠãèŠã€ãã£ãããŒãžã§ããcontextããã©ã°ã§äœ¿çšãããã¹ãŠã®ã¬ã³ãŒããèªã¿åããŸãã
zlib èŸæžãä¿åããŸã (ãã®ããŒãžã«è¿œå ããããã«å¿
èŠã«ãªããŸã)ã
以äžã§ãããŠã³ããŒããå®äºããã³ã³ããã¹ãã埩å ãããäœæ¥ã§ããããã«ãªããŸãã
ä»èš³åž³ãšã³ããªã®è¿œå
Z_SYNC_FLUSH ãæå®ããŠãæ£ããèŸæžã䜿çšããŠã¬ã³ãŒããå§çž®ããå§çž®ãããã¬ã³ãŒããçŸåšã®ããŒãžã«åãŸããã©ããã確èªããŸãã
é©åããªãå Žå (ãŸãã¯ããŒãžã« CRC ãšã©ãŒããã£ãå Žå)ãæ°ããããŒãžãéå§ããŠãã ãã (以äžãåç
§)ã
ã¬ã³ãŒããš CRC ãæžãçããŸãããšã©ãŒãçºçããå Žåã¯ãæ°ããããŒãžãéå§ããŠãã ããã
æ°ããããŒãž
æå°çªå·ã®ç©ºãããŒãžãéžæããŸã (空ãããŒãžãšã¯ãããããŒã«äžæ£ãªãã§ãã¯ãµã ãããããŒãžããŸãã¯çŸåšã®ããŒãžã§ã³ããåã®ããŒãžã§ã³ãæã€ããŒãžã§ãããšèããããŸã)ã該åœããããŒãžããªãå Žåã¯ãçŸåšã®ããŒãžã§ã³ãšåãããŒãžã§ã³ãæã€ããŒãžã®äžããæå°çªå·ã®ããŒãžãéžæããŸãã
éžæããããŒãžãæ¶å»ããŸãã 0xffã§å
容ã確èªããŸããäœãåé¡ããã£ãå Žåã¯ã次ã®ç©ºãããŒãžãªã©ã«é²ãã§ãã ããã
æ¶å»ãããããŒãžã«ããããŒãæžã蟌ã¿ãŸããæåã®ãšã³ããªã¯ã³ã³ããã¹ãã®çŸåšã®ç¶æ
ã§ããã次ã¯æªæžã蟌ã¿ã®ãã° ãšã³ã㪠(ååšããå Žå) ã§ãã
ãã©ãŒãããã®é©çšæ§
ç§ã®æèŠã§ã¯ãããã¯ãå€ããå°ãªããå§çž®å¯èœãªæ å ±ã¹ããªãŒã (ãã¬ãŒã³ ããã¹ããJSONãMessagePackãCBORããããã protobuf) ã NOR Flash ã«ä¿åããã®ã«é©ãã圢åŒã§ããããšãå€æããŸããã
ãã¡ããããã®ãã©ãŒããã㯠SLC NOR ãã©ãã·ã¥çšã«ã調æŽããããŠããŸãã
NAND ã MLC NOR ãªã©ã®é« BER ã¡ãã£ã¢ã§ã¯äœ¿çšããªãã§ãã ããã ïŒãã®ãããªã¡ã¢ãªã¯è²©å£²ãããŠããã®ã§ããããïŒä¿®æ£ã³ãŒãã®äœåã§ããèšåãããŠããªãã®ãèŠãããšããããŸãïŒ.
ããã«ãç¬èªã® FTL ãæã€ããã€ã¹ (USB ãã©ãã·ã¥ãSDãMicroSD ãªã©) ã§ã¯äœ¿çšããªãã§ãã ããã (ãã®ãããªã¡ã¢ãªã®ããã«ãç§ã¯ 512 ãã€ãã®ããŒãž ãµã€ãºãåããŒãžã®å é ã«çœ²åãããã³äžæã®ã¬ã³ãŒãçªå·ãæã€ãã©ãŒããããäœæããŸãããå Žåã«ãã£ãŠã¯ãåçŽãªã·ãŒã±ã³ã·ã£ã«èªã¿åãã«ãã£ãŠãäžå ·åã®ããããã©ãã·ã¥ ãã©ã€ããããã¹ãŠã®ããŒã¿ãå埩ã§ããããšããããŸãã).
ã¿ã¹ã¯ã«å¿ããŠã128KãããïŒ16KbïŒãã1GãããïŒ128MBïŒãŸã§ã®ãã©ãã·ã¥ãã©ã€ãã§ãã©ãŒããããå€æŽããã«äœ¿çšã§ããŸããå¿ èŠã«å¿ããŠããã倧ããªãããã§ã䜿çšã§ããŸãããããããããŒãž ãµã€ãºã調æŽããå¿ èŠããããŸãã (ããããããã§ãã§ã«çµæžçå®çŸå¯èœæ§ã®åé¡ãçããŠããŸãã倧容é NOR ãã©ãã·ã¥ã®äŸ¡æ Œã¯å¿åŒ·ããã®ã§ã¯ãããŸãã).
誰ãããã®åœ¢åŒã«èå³ãæã£ãŠããªãŒãã³ãªãããžã§ã¯ãã§äœ¿çšããããšæã£ãããæžããŠãã ãããç§ã¯æéãèŠã€ããŠã³ãŒãã磚ããgithub ã«æçš¿ããŸãã
ãŸãšã
ã芧ã®ãšãããæçµçã«ã¯ã·ã³ãã«ãªåœ¢åŒã«ãªããŸãã ãããŠéå±ãã.
ç§ã®èŠç¹ã®é²åãèšäºã«åæ ããã®ã¯é£ããã§ãããä¿¡ããŠãã ãããåœåã¯ãè¿ãã§æ žççºãèµ·ããŠãçãæ®ãããšãã§ãããæŽç·Žããããå£ããªããã®ãäœãããã£ãã®ã§ããããããããã§ãçæ§ãåã¡ãåªå é äœã¯åŸã ã«ã·ã³ãã«ããšã³ã³ãã¯ããã«ç§»ã£ãŠãããŸããã
ãããããŠç§ãééã£ãŠããã®ã§ããããïŒã¯ãã確ãã«ãããšãã°ãäœå質ã®ãã€ã¯ãåè·¯ã倧éã«è³Œå ¥ããããšãå€æããå¯èœæ§ããããŸãããŸãã¯ãä»ã®äœããã®çç±ã§ãæ©åšãä¿¡é Œæ§ã®æåŸ ãæºãããªãå¯èœæ§ããããŸãã
ããã«ã€ããŠã®èšç»ã¯ãããŸãã?ãã®èšäºãèªãã åŸã¯ãèšç»ãããããšã«çãã®äœå°ã¯ãªããšæããŸãããããŠäžäººã§ããããŸããã
ããå°ãæ·±å»ãªè©±ã«ãªããŸããããã®ãã©ãŒãããã¯å®çšçãªãªãã·ã§ã³ãšããã©ã€ã¢ã«ãã«ãŒã³ãã®äž¡æ¹ãšããŠéçºãããŸããã
çŸæç¹ã§ã¯ãããŒãã«äžã®ãã¹ãŠãæ£åžžã«åäœããŠããŸããæåéãå æ¥ããœãªã¥ãŒã·ã§ã³ããããã€ãããäºå®ã§ã ïŒçŽïŒ æ°çŸå°ã®ããã€ã¹ã§ããæŠéãæäœã§äœãèµ·ããããèŠãŠã¿ãŸããã (幞ããªããšã«ããã®åœ¢åŒã§é害ã確å®ã«æ€åºã§ããããšãé¡ã£ãŠããŸããããããã°å®å šãªçµ±èšãåéã§ããŸã)ãæ°ã«æãããã°çµè«ãåºããã ãã (éãæªããã°ãã£ãšæ©ããŠã).
䜿çšããçµæãé倧ãªåé¡ãçºèŠãããæ¹åãå¿ èŠãªå Žåã¯ãå¿ ãæžã蟌ã¿ãŸãã
æåŠ
äžå€äœåã®é·ããŠéå±ãªãªã¹ããäœããããªãã£ãã®ã¯ã誰ãã Google ãæã£ãŠããããã§ãã
ããã§ãç§ã«ãšã£ãŠç¹ã«èå³æ·±ããšæããã調æ»çµæã®ãªã¹ããæ®ãããšã«ããŸããããåŸã ã«èšäºã®æ¬æã«çŽæ¥ç§»è¡ãããªã¹ãã« 1 ã€ã®é ç®ãæ®ããŸããã
- ãŠãŒãã£ãªãã£
ã€ã³ãã²ã³ èè zlibããã deflate/zlib/gzip ã¢ãŒã«ã€ãã®å 容ãæ確ã«è¡šç€ºã§ããŸãã deflate (ãŸã㯠gzip) 圢åŒã®å éšæ§é ãæ±ãå¿ èŠãããå Žåã¯ãããã匷ããå§ãããŸãã
åºæïŒ habr.com