XNUMX๋
์ ๊ฐ๋ฐ ๋์
GCC 10.1์ C++20 ํ์ค์ ์ํด ๊ฐ๋ฐ๋ C++ ์ธ์ด์ ๋ง์ ํ์ ๊ตฌํ, ํฅํ C ์ธ์ด ํ์ค(C2x)๊ณผ ๊ด๋ จ๋ ๊ฐ์ ์ฌํญ, ์ปดํ์ผ๋ฌ ๋ฐฑ์๋์ ์๋ก์ด ์ต์ ํ ๋ฐ ์คํ์ ์ง์์ผ๋ก ์ ๋ช
ํฉ๋๋ค.
์ฃผ์
-
์ถ๊ฐ๋จ ์ ์ ๋ถ์์ ์คํ ๋ชจ๋ "-ํฌ ๋ถ์๊ธฐ "๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ์คํ ๊ฒฝ๋ก์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ํ ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ์ ์ฐจ๊ฐ ๋ถ์์ ์ํํฉ๋๋ค. ์ด ๋ชจ๋๋ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํ free() ํจ์์ ๋ํ ์ด์ค ํธ์ถ, ํ์ผ ์ค๋ช ์ ๋์ถ, ๋ ํฌ์ธํฐ ์ญ์ฐธ์กฐ ๋ฐ ์ ๋ฌ, ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก ์ก์ธ์ค, ์ด๊ธฐํ๋์ง ์์ ๊ฐ ์ฌ์ฉ ๋ฑ๊ณผ ๊ฐ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค. OpenSSL ์ฝ๋์ ๋ํ ์๋ก์ด ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ์๋ณ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.์ํํ ์ทจ์ฝ์ฑ . - ํ๋ก์์ ๊ฐ ์ต์ ํ๊ฐ ๊ฐ์ ๋์์ต๋๋ค. IPA-SRA(ํ๋ก์์ ๊ฐ ์ค์นผ๋ผ ๊ณต์ ๊ต์ฒด) ํจ์ค๋ ๋ฐ์ธ๋ ์ ์๋ํ๋๋ก ์ฌ์ค๊ณ๋์์ผ๋ฉฐ, ๋ฌด์๋ณด๋ค๋ ๊ณ์ฐ ๋ฐ ๋ฐํ๋ ์ฌ์ฉ๋์ง ์์ ๊ฐ์ ์ ๊ฑฐํฉ๋๋ค. "-O2" ์ต์ ํ ๋ชจ๋์์๋ "-finline-functions" ์ต์ ์ด ํ์ฑํ๋๋ฉฐ, ์ด๋ ์คํ ์ฑ๋ฅ๋ณด๋ค ๋ ์ปดํฉํธํ ์ฝ๋๋ฅผ ์ ํธํ๋๋ก ๋ค์ ์กฐ์ ๋ฉ๋๋ค. ์ธ๋ผ์ธ ํจ์ ๋ฐฐํฌ๋ฅผ ์ํ ํด๋ฆฌ์คํฑ ์์ ์ด ๊ฐ์ํ๋์์ต๋๋ค. ์ธ๋ผ์ธ ํ์ฅ ๋ฐ ํจ์ ๋ณต์ ํด๋ฆฌ์คํฑ์ ์ด์ ๊ฐ ๋ฒ์์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ๋ณํ์ ํจ๊ณผ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. C++์ ๊ฒฝ์ฐ ์ ํ ๊ธฐ๋ฐ ๋ณ์นญ ๊ตฌ๋ฌธ ๋ถ์์ ์ ํ์ฑ์ด ํฅ์๋์์ต๋๋ค.
- ํฅ์๋ ์ฐ๊ฒฐ ์๊ฐ ์ต์ ํ(LTO). ์๋ก์ด ์คํ ํ์ผ์ด ์ถ๊ฐ๋์์ต๋๋ค.
lto ๋คํ LTO ๋ฐ์ดํธ์ฝ๋๋ก ๊ฐ์ฒด ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ค์ ํฉ๋๋ค. ๋ณ๋ ฌ LTO ํจ์ค๋ ๋์์ ์คํ๋๋ make ์์ ์ ์๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ๊ณ , ๊ฒฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ CPU ์ฝ์ด ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ณ๋ ฌํ ์์๋ก ์ฌ์ฉํฉ๋๋ค. zstd ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ LTO ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ถํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. - ์ฝ๋ ํ๋กํ์ผ๋ง(PGO - Profile-guided Optimization) ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ต์ ํ ๋ฉ์ปค๋์ฆ์ด ๊ฐ์ ๋์ด ์ฝ๋ ์คํ ํน์ฑ ๋ถ์์ ๋ฐํ์ผ๋ก ๋์ฑ ์ต์ ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ปดํ์ผ ๋ฐ ํซ/์ฝ๋ ์ฝ๋ ๋ถ๋ฆฌ ์ค ํ๋กํ ์ ์ง ๊ด๋ฆฌ๊ฐ ํฅ์๋์์ต๋๋ค. ์ต์
์ ํตํด "
-fprofile-๊ฐ ยป ์ด์ ๊ฐ์ ํตํ ๋ฐ ๋ณด๋ค ์ ํํ ํ๋กํ ์ ๋ณด ์ ๊ณต ๋ฑ ์ต๋ 4๊ฐ์ ํ๋กํ ๊ฐ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. - C, C++ ๋ฐ Fortran ์ธ์ด์ฉ์ผ๋ก ๊ตฌํ๋ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ ์ฌ์
์คํACC 2.6 ๋ GPU ๋ฐ NVIDIA PTX์ ๊ฐ์ ํน์ ํ๋ก์ธ์์์ ์์ ์ ์คํ๋ก๋ํ๊ธฐ ์ํ ๋๊ตฌ๋ฅผ ์ ์ํฉ๋๋ค. ํ์ค ๊ตฌํ์ด ๊ฑฐ์ ์๋ฃ๋์์ต๋๋ค.์คํMP 5.0 (Open Multi-Processing)์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋ฒกํฐํ ์ฅ์น(SIMD)๊ฐ ์๋ ๋ฉํฐ ์ฝ์ด ๋ฐ ํ์ด๋ธ๋ฆฌ๋(CPU+GPU/DSP) ์์คํ ์ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ์ ์ฉํ๋ API์ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. lastprivate ์กฐ๊ฑด, ์ค์บ ๋ฐ ๋ฃจํ ์ง์์ด, order ๋ฐ use_device_addr ํํ์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. OpenMP ๋ฐ OpenACC์ ๊ฒฝ์ฐ 10์ธ๋(Fiji) ๋ฐ 20์ธ๋ AMD Radeon(GCN) GPU(VEGA XNUMX/VEGA XNUMX)์์์ ์คํ๋ก๋ ์์ ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. - C ๊ณ์ด ์ธ์ด์ ๊ฒฝ์ฐ ์ฐธ์กฐ ๋๋ ํฌ์ธํฐ๋ก ์ ๋ฌ๋ ๊ฐ์ฒด์ ๋ํ ํจ์์ ์ก์ธ์ค๋ฅผ ์ค๋ช ํ๊ณ ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด ํฌ๊ธฐ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์ ์ธ์์ ์ฐ๊ฒฐํ๊ธฐ ์ํด "access" ํจ์๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. "access"์ ํจ๊ป ์๋ํ๊ธฐ ์ํด "type" ์์ฑ์ด ๊ตฌํ๋์ด ์๋ฅผ ๋ค์ด ๋ฐฐ์ด ๊ฒฝ๊ณ ์ธ๋ถ ์์ญ์ ๊ฐ์ ์ธ ๋ ์ฌ์ฉ์ ํจ์์ ์๋ชป๋ ์ก์ธ์ค๋ฅผ ๊ฐ์งํฉ๋๋ค. ๋ํ ELF ํ์ผ์ ๊ธฐํธ๋ฅผ ํน์ ๋ฒ์ ๋ฒํธ์ ์ฐ๊ฒฐํ๋ "symver" ์์ฑ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์๋ก์ด ๊ฒฝ๊ณ ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค:
- "-Wstring-compare"("-Wextra"๋ก ํ์ฑํ๋จ) - strcmp ๋ฐ strncmp ํจ์ ํธ์ถ ๊ฒฐ๊ณผ์ XNUMX์ ๋น๊ตํ๋ ํํ์์ด ์์์ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๋ ๊ธธ์ด๊ฐ ์์์ ๋์ผํ๋ฏ๋ก ํ ์ธ์์ ํฌ๊ธฐ๊ฐ ๋ ๋ฒ์งธ ์ธ์์ ๋ฐฐ์ด ํฌ๊ธฐ๋ณด๋ค ํฝ๋๋ค.
- "-Wzero-length-bounds"("-Warray-bounds"๋ก ํ์ฑํ๋จ) - ๊ธธ์ด๊ฐ XNUMX์ธ ๋ฐฐ์ด ์์์ ์ก์ธ์คํ๋ฉด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์๋ค๋ ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
- ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ํฉ์ ์๋ฅผ ํ์ฅํ๊ธฐ ์ํด "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" ๋ฐ "-Wstringop-overflow" ๊ฒฝ๊ณ ๊ฐ ํ์ฅ๋์์ต๋๋ค. ์ฒ๋ฆฌ๋๋ ๊ฒ์ ๋๋ค.
- UCN ํ๊ธฐ๋ฒ(\uNNNN ๋๋ \UNNNNNNNN) ๋์ ํ์ฌ ์ธ์ฝ๋ฉ(๊ธฐ๋ณธ์ ์ผ๋ก UTF-8)์ ์ฌ์ฉํ์ฌ ์๋ณ์์ ์์ด๋ ๋ฌธ์๋ฅผ ์ง์ ์ง์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. ์๋ฅผ ๋ค์ด:
์ ์ const int ฯ = 3;
int get_naรฏve_pi() {
ฯ๋ฅผ ๋ฐํ;
} - C ์ธ์ด์ ๊ฒฝ์ฐ C2X ํ์ค ๋ด์์ ๊ฐ๋ฐ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ผ๋ถ๊ฐ ๊ตฌํ๋์์ต๋๋ค(-std=c2x ๋ฐ -std=gnu2x๋ฅผ ์ง์ ํ์ฌ ํ์ฑํ๋จ). ๋ค์๊ณผ ๊ฐ์ด ์์ฑ์ ์ ์ํ๊ธฐ ์ํด "[[]]" ๊ตฌ๋ฌธ์ ๋ํ ์ง์์ด ๋ํ๋ฌ์ต๋๋ค. C++(์: [[gnu ::const]], [[deprecated]], [[fallthrough]] ๋ฐ [[maybe_unused]]. UTF-8 ๋ฌธ์๋ก ์์๋ฅผ ์ ์ํ๊ธฐ ์ํ "u8" ๊ตฌ๋ฌธ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ ์๋ก์ด ๋งคํฌ๋ก๊ฐ ์ถ๊ฐ๋์์ต๋๋ค. . strftime์ "%OB" ๋ฐ "%Ob" ๋์ฒด ํญ๋ชฉ์ ์ถ๊ฐํ์ต๋๋ค. - C์ ๊ธฐ๋ณธ ๋ชจ๋๋ "-fno-common"์ด๋ฉฐ, ์ด๋ฅผ ํตํด ์ผ๋ถ ํ๋ซํผ์์ ์ ์ญ ๋ณ์์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ก์ธ์คํ ์ ์์ต๋๋ค.
- C++์ ๊ฒฝ์ฐ C++16 ํ์ค์์ ๊ฐ๋ฐ๋ ์ฝ 20๊ฐ์ง ๋ณ๊ฒฝ ๋ฐ ํ์ ์ด ๊ตฌํ๋์์ต๋๋ค. ์ถ๊ฐ๋ ํค์๋ โcontinitโ ํฌํจ
ํ ํ๋ฆฟ ํ์ฅ์ ๋ํ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค.๊ฐ๋ ๋ค ". ๊ฐ๋ ์ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ ์ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ก ํ์ฉ๋ ์ ์๋ ์ธ์ ์งํฉ์ ์ ํํ๋ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์ ์๊ตฌ ์ฌํญ ์งํฉ์ ์ ์ํ ์ ์์ต๋๋ค. ๊ฐ๋ ์ ํ ํ๋ฆฟ ๋ด์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์ ํ์ ์์ฑ๊ณผ ์ ๋ ฅ ๋งค๊ฐ๋ณ์์ ๋ฐ์ดํฐ ์ ํ ์์ฑ ๊ฐ์ ๋ ผ๋ฆฌ์ ๋ถ์ผ์น๋ฅผ ๋ฐฉ์งํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. - G++์์๋ constexpr์ ํตํด ์์ ๊ฐ์ฒด ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ ์๋์ง ์์ ๋์์ ๊ฐ์งํฉ๋๋ค. constexpr์ ๊ณ์ฐํ ๋ ์ปดํ์ผ๋ฌ์ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ๊ฐ์ํ์ต๋๋ค. ์๋ก์ด ๊ฒฝ๊ณ "-Wmismatched-tags" ๋ฐ "-Wredundant-tags"๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- ์๋ก์ด ๋ช
๋ น์ค ์ต์
์ด ์ ์๋์์ต๋๋ค:
- "-fallocation-dce"๋ ๋ถํ์ํ "new" ๋ฐ "delete" ์ฐ์ฐ์ ์์ ์ ๊ฑฐํฉ๋๋ค.
- ํ๋ จ ์คํ์ด ์๋ ์ฝ๋์ ๋ํ ํฌ๊ธฐ ์ต์ ํ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด "-fprofile-partial-training"์ ์ฌ์ฉํฉ๋๋ค.
- "-fprofile-reproducible์ ํ๋กํ์ผ ์ฌํ์ฑ ์์ค์ ์ ์ดํฉ๋๋ค.
- "-fprofile-prefix-path"๋ ๋ณ๋์ ํ๋กํ ์์ฑ์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์์ค ๋น๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ์ํฉ๋๋ค("-fprofile-generate=profile_dir" ๋ฐ "-fprofile-use=profile_dir"์ ๊ฒฝ์ฐ).
- ์ธ๊ธ๋ ์ต์ ์ ๋ํ ๊ฒฝ๊ณ ํ ์คํธ์๋ ํด๋น ์ต์ ์ ๋ํ ์ค๋ช ์๋ก ์ด๋ํ ์ ์๋ ํ์ดํผ๋งํฌ๊ฐ ์ ๊ณต๋ฉ๋๋ค. URL ๋์ฒด๋ "-fdiagnostics-urls" ์ต์ ์ ์ฌ์ฉํ์ฌ ์ ์ด๋ฉ๋๋ค.
- ์ ์ฒ๋ฆฌ๊ธฐ ์ฐ์ฐ์ ์ถ๊ฐ "
__has_builtin "๋ฅผ ์ฌ์ฉํ์ฌ ๋ด์ฅ ๊ธฐ๋ฅ์ ํ์ธํ ์ ์์ต๋๋ค. - "round"์ ์ ์ฌํ์ง๋ง ISO/IEC TS 18661 ์ฌ์์ ์ ์๋ ๋ฐ์ฌ๋ฆผ ํจ์๋ฅผ ๊ตฌํํ์ฌ ์๋ก์ด ๋ด์ฅ ํจ์ "__builtin_roundeven"์ ์ถ๊ฐํ์ง๋ง 0.5๋ณด๋ค ํฐ ๋ถ๋ถ์ (๋ ํฐ ๊ฐ์ผ๋ก) 0.5๋ณด๋ค ์๊ฒ ๋ฐ์ฌ๋ฆผํฉ๋๋ค. - ์๋๋ก(0.5์ผ๋ก), XNUMX์ ๋์ผ - ๋์์ ๋ ๋ฒ์งธ ์ซ์์ ํจ๋ฆฌํฐ๋ถํฐ ์์ํฉ๋๋ค.
- AArch64 ์ํคํ
์ฒ์ ๊ฒฝ์ฐ SVE2 ํ์ฅ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ผ๋ฉฐ ๋ด์ฅ SVE ACLE ๊ธฐ๋ฅ ๋ฐ ์ ํ์ ๋ํ ์ถ๊ฐ ์ง์, ๋ฒกํฐํ ์ฌ์ฉ์ ํฌํจํ์ฌ SVE(Scalable Vector Extension)์ ๋ํ ์ง์์ด ๊ฐ์ ๋์์ต๋๋ค. LSE(Large System Extensions) ๋ฐ TME(Transactional Memory Extension)์ ๋ํ ์ง์์ด ํ์ฅ๋์์ต๋๋ค. ๋์ ์์ฑ, ๋ฐ์ฌ๋ฆผ, ๋ฉ๋ชจ๋ฆฌ ํ๊ทธ ๋ฐ์ธ๋ฉ์ ๋ํ ์ง์นจ์ ํฌํจํ์ฌ Armv8.5-A ๋ฐ Armv8.6-A์์ ์ ์๋ ์๋ก์ด ์ง์นจ์ด ์ถ๊ฐ๋์์ต๋๋ค.
bfloat16 ๋ฐ ํ๋ ฌ ๊ณฑ์ . ํ๋ก์ธ์ ์ง์ ์ถ๊ฐ
ํ ํผ์ง-A77,
ํ ํผ์ง-A76AE,
ํ ํผ์ง-A65,
ํ ํผ์ง-A65AE,
Arm Cortex-A34 ๋ฐ
๋ง๋ฒจ ThunderX3. - ARM32์ฉ ABI FDPIC(64๋นํธ ํจ์ ํฌ์ธํฐ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. 64๋นํธ ์ ์ ์ฐ์ฐ ์ฒ๋ฆฌ๋ฅผ ์ฌ์ค๊ณํ๊ณ ์ต์ ํํ์ต๋๋ค. ์ถ๊ฐ๋ CPU ์ง์
ํ ํผ์ง-A77,
Arm Cortex-A76AE ๋ฐ
ํ Cortex-M35P. 32๋นํธ SIMD, 16๋นํธ ๊ณฑ์ , ๋์น ์ฐ์ ๋ฐ ๊ธฐํ DSP ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ๋ฅผ ํฌํจํ์ฌ ACLE ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ช ๋ น์ ๋ํ ์ง์์ด ํ์ฅ๋์์ต๋๋ค. ACLE CDE(Custom Datapath Extension) ์ง์นจ์ ๋ํ ์คํ์ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. - GCN ๋ง์ดํฌ๋ก์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ AMD GPU์ฉ ๋ฐฑ์๋์ ์ฝ๋ ์์ฑ ๋ฐ ๋ฒกํฐํ๊ฐ ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
- AVR ์ํคํ
์ฒ๋ฅผ ์ํ XMEGA ์ ์ฌ ์ฅ์น์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609, ATmega3208, ATmega3209 4808, ATmega4809 ๋ฐ ATmegaXNUMX. - IA-32/x86-64 ์ํคํ ์ฒ์ฉ์ผ๋ก ์๋ก์ด Intel ENQCMD ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ ํ์ฅ(-menqcmd)์ด ์ถ๊ฐ๋์์ต๋๋ค. Intel Cooperlake(-march=cooperlake, AVX512BF16 ISA ํ์ฅ ํฌํจ) ๋ฐ Tigerlake(-march=tigerlake, MOVDIRI, MOVDIR64B ๋ฐ AVX512VP2INTERSECT ISA ํ์ฅ ํฌํจ) CPU์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- HSA ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ด๊ธฐ์ข ์ปดํจํ ์์คํ ์ ๋ํ HSAIL(์ด๊ธฐ์ข ์์คํ ์ํคํ ์ฒ ์ค๊ฐ ์ธ์ด) ๊ตฌํ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์ถ์ฒ : opennet.ru