ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ื˜ืฉื™ืคึผืก

ื“ื™ ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ื”ืื˜ ืœืึธื ื˜ืฉื˜ ืึท ื ื™ื™ึทืข ืจื™ื›ื˜ื•ื ื’ - ื“ื™ ื˜ืฉื™ืคึผืก ืึทืœืœื™ืึทื ืกืข. ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜, ื“ื™ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข ื•ื•ืขื˜ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ื“ื™ ืคืจื™ื™ RISC-V ืœื™ืžืขื“ ืกื™ืกื˜ืขื ืื•ืŸ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืคึผืจืึทืกืขืกืขืจื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืขืก. ื–ืืœ ืื•ื ื“ื– ื“ืขืจืฆื™ื™ืœืŸ ืื™ืจ ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืขื ื™ืฉ ืื™ืŸ ื“ืขื ื’ืขื’ื ื˜.

ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ื˜ืฉื™ืคึผืก
/ ืคืึธื˜ืึธ Gareth Halfacree CC BY-SA

ืคืืจื•ื•ืืก ืื™ื– ื“ื™ ื˜ืฉื™ืคึผืก ืึทืœืœื™ืึทื ืกืข ืืจื•ื™ืก?

ืคึผืึทื˜ืฉืึทื– ืคึผืจืึทื˜ืขืงื˜ื™ื ื’ ืงืขื’ืŸ ืžืขืœื˜ื“ืึธื•ื•ืŸ ืื•ืŸ ืกืคึผืขืงื˜ืขืจ, ืื™ืŸ ืขื˜ืœืขื›ืข ืงืึทืกืขืก ืจืขื“ื•ืฆื™ืจืŸ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™ ืกืขืจื•ื•ืขืจืก ื“ื•ืจืš 50%. ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ื ื™ื™ึท ื•ื•ืขืจื™ื™ื™ืฉืึทื ื– ืคื•ืŸ ื•ื•ืึทืœื ืขืจืึทื‘ื™ืœื™ื˜ื™ื– ืฉื™ื™ึทื›ื•ืช ืฆื• ืกืคึผืขืงื•ืœืึทื˜ื™ื•ื•ืข ื‘ืึทืคึฟืขืœืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ื–ืขื ืขืŸ ื ืึธืš ื™ืžืขืจื“ื–ืฉื™ื ื’. ื•ื•ืขื’ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื–ื™ื™ ื’ืขื•ื•ืืจืŸ ื‘ืืงืื ื˜ ืื™ืŸ ืคืจื™ ืžืขืจืฅ - ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื–ื™ื›ืขืจื”ื™ื™ื˜ ืกืคึผืขืฉืึทืœืึทืกืฅ ื“ืึทื‘ื“ ืขืก ืกืคึผืึธื™ืœืขืจ. ื“ืขื ืกื™ื˜ื•ืึทืฆื™ืข ืึทืคืขืงืฅ ื“ื™ืกืงื•ืกื™ืข ื“ื™ ื ื•ื™ื˜ ืฆื• ืึธืคึผืฉืึทืฆืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืกืึทืœื•ืฉืึทื ื– ืื•ืŸ ืึทืคึผืจืึธื•ื˜ืฉื™ื– ืฆื• ื–ื™ื™ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’. ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, Intel ื’ืจื™ื™ื˜ืŸ ื–ื™ืš ืฉื•ื™ืŸ ืึท ื ื™ื™ึทืข ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคึฟืึทืจ ื–ื™ื™ึทืŸ ืคึผืจืึทืกืขืกืขืจื–, ื ื™ื˜ ืื•ื ื˜ืขืจื˜ืขื ื™ืง ืฆื• Meltdown ืื•ืŸ Specter.

ื“ื™ ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ืื™ื– ืื•ื™ืš ื ื™ืฉื˜ ืฉื˜ื™ื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ. ื“ื™ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข ื”ืื˜ ืœืึธื ื˜ืฉื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืื™ื ื™ืฆื™ืื˜ื™ื•ื•, ื“ื™ CHIPS Alliance, ื•ื•ืขืžืขื ืก ืžื™ื˜ื’ืœื™ื“ืขืจ ื•ื•ืขืœืŸ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ RISC-V-ื‘ืื–ื™ืจื˜ ืคึผืจืึทืกืขืกืขืจื–.

ื•ื•ืึธืก ืคึผืจืึทื“ื–ืฉืขืงืก ื–ืขื ืขืŸ ืฉื•ื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขื“?

ื˜ืฉื™ืคึผืก ืึทืœืœื™ืึทื ืกืข ืžื™ื˜ื’ืœื™ื“ืขืจ ืึทืจื™ื™ึทื ื ืขืžืขืŸ Google, Western Digital (WD) ืื•ืŸ SiFive. ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ ื“ืขืจืœืื ื’ื˜ ื–ื™ื™ืขืจ ืื™ื™ื’ืŸ ื“ื™ื•ื•ืขืœืึทืคึผืžืึทื ืฅ. ื–ืืœ ืก ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™.

RISCV-DV

ื“ืขืจ IT ื–ื•ื›ืŸ ืจื™ื– ื”ืื˜ ื‘ืืคืจื™ื™ื˜ ืึท ืคึผืœืึทื˜ืคืึธืจืžืข ืคึฟืึทืจ ื˜ืขืกื˜ื™ื ื’ RISC-V-ื‘ืื–ื™ืจื˜ ืคึผืจืึทืกืขืกืขืจื– ืฆื• ืขืคืขื ืขืŸ ืžืงื•ืจ. ื˜ืจืึทืค ืœื™ื™ื–ื•ื ื’ ื“ื–ืฉืขื ืขืจื™ื™ืฅ ื˜ื™ืžื– ืึทื– ื“ืขืจืœื•ื™ื‘ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืคื•ืŸ ื“ื™ ืžื™ื˜ืœ: ืคึผืจื•ื‘ื™ืจืŸ ื™ื‘ืขืจื’ืึทื ื’ ืคึผืจืึทืกืขืกืึทื–, ืจื•ืคืŸ ืกื˜ืึทืงืก, CSR- ืจืขื“ื–ืฉื™ืกื˜ืขืจืก, ืืื–"ื• ื•.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื“ื™ ืงืœืึทืก ืงื•ืงื˜ ื•ื•ื™ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืคึผืขืจืคืึธืจืžื™ื ื’ ืึท ืคึผืฉื•ื˜ ืคึผืจืึธื‘ืข ืคื•ืŸ โ€‹โ€‹ืึทืจื™ื˜ืžืขื˜ื™ืง ื™ื ืกื˜ืจืึทืงืฉืึทื ื–:

class riscv_arithmetic_basic_test extends riscv_instr_base_test;

  `uvm_component_utils(riscv_arithmetic_basic_test)
  `uvm_component_new

  virtual function void randomize_cfg();
    cfg.instr_cnt = 10000;
    cfg.num_of_sub_program = 0;
    cfg.no_fence = 1;
    cfg.no_data_page = 1'b1;
    cfg.no_branch_jump = 1'b1;
    `DV_CHECK_RANDOMIZE_WITH_FATAL(cfg,
                                   init_privileged_mode == MACHINE_MODE;
                                   max_nested_loop == 0;)
    `uvm_info(`gfn, $sformatf("riscv_instr_gen_config is randomized:n%0s",
                    cfg.sprint()), UVM_LOW)
  endfunction

endclass

ืื•ื™ืฃ ืœื•ื™ื˜ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก, ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ืื™ื– ืึทื ื“ืขืจืฉ ืคื•ืŸ ื–ื™ื™ึทืŸ ืึทื ืึทืœืึธื’ื•ืขืก ืื™ืŸ ืึทื– ืขืก ืึทืœืึทื•ื– ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœ ื˜ืขืกื˜ื™ื ื’ ืคื•ืŸ ืึทืœืข ืฉืคึผืึธืŸ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ื–ื›ึผืจื•ืŸ ื‘ืœืึธืง.

OmniXtend ืคึผืจืึธื˜ืึธืงืึธืœ

ื“ืึธืก ืื™ื– ืึท ื ืขืฅ ืคึผืจืึธื˜ืึธืงืึธืœ ืคึฟื•ืŸ WD ื•ื•ืึธืก ื’ื™ื˜ ืงืึทืฉ ืงืึธื•ื›ื™ืจืึทื ืก ืื™ื‘ืขืจ ืขื˜ื”ืขืจื ืขื˜. OmniXtend ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื•ื•ืขืงืกืœ ืึทืจื˜ื™ืงืœืขืŸ ื’ืœื™ื™ึทืš ืžื™ื˜ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ืงืึทืฉ ืื•ืŸ ืื™ื– ื’ืขื ื™ืฆื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืคืึทืจืฉื™ื“ืŸ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืึทืงืกืขืœืขืจื™ื™ื˜ืขืจื–: ื’ืคึผื• ืึธื“ืขืจ ืคืคึผื’ืึท. ืขืก ืื™ื– ืื•ื™ืš ืคึผืึทืกื™ืง ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืงื™ื™ืคืœ RISC-V ื˜ืฉื™ืคึผืก.

ืคึผืจืึธื˜ืึธืงืึธืœ ืฉื•ื™ืŸ ื’ืขืฉื˜ื™ืฆื˜ SweRV ื˜ืฉื™ืคึผืกืึธืจื™ืขื ื˜ื™ื“ ืฆื• ื“ืึทื˜ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ืื™ืŸ ื“ืึทื˜ืŸ ืกืขื ื˜ืขืจืก. SweRV ืื™ื– ืึท 32-ื‘ื™ืกืœ, ืฆื•ื•ื™ื™ืขื ื“ื™ืง ืจืขืจื  - ืœื™ื ื™ืข ืกื•ืคึผืขืจืกืงืึทืœืขืจ ืคึผืจืึทืกืขืกืขืจ ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ืึท 28nm ืคึผืจืึธืฆืขืก ื˜ืขื›ื ืึธืœืึธื’ื™ืข. ื™ืขื“ืขืจ ืจืขืจื  - ืœื™ื ื™ืข ื”ืื˜ ื ื™ื™ึทืŸ ืœืขื•ื•ืขืœืก, ื•ื•ืึธืก ืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ืžืึทืกืข ืื•ืŸ ื•ื™ืกืคื™ืจืŸ ืงื™ื™ืคืœ ืงืึทืžืึทื ื“ื– ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™. ื“ืขืจ ืžื™ื˜ืœ ืึทืคึผืขืจื™ื™ืฅ ืื™ืŸ ืึท ืึธืคื˜ืงื™ื™ึทื˜ ืคื•ืŸ 1,8 GHz.

ื’ืขื ืขืจืึทื˜ืึธืจ ืจืึทืงืขื˜ ื˜ืฉื™ืคึผ

ื“ื™ ืœื™ื™ื–ื•ื ื’ ืื™ื– ืคึฟื•ืŸ SiFive, ื•ื•ืึธืก ืื™ื– ื’ืขื’ืจื™ื ื“ืขื˜ ื“ื•ืจืš ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคื•ืŸ RISC-V ื˜ืขื›ื ืึธืœืึธื’ื™ืข. ืจืึทืงืขื˜ ื˜ืฉื™ืคึผ ืื™ื– ืึท RISC-V ืคึผืจืึทืกืขืกืขืจ ื”ืึทืจืฅ ื’ืขื ืขืจืึทื˜ืึธืจ ืื™ืŸ ื“ื™ ื˜ืฉื™ืกืขืœ ืฉืคึผืจืึทืš. ืขืจ ืื™ื– ืึท ืึท ืกื›ื•ื ืคื•ืŸ ืคึผืึทืจืึทืžืขื˜ืขืจื™ื™ื–ื“ ืœื™ื™ื‘ืจืขืจื™ื– ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืฆื• ืฉืึทืคึฟืŸ ืกืึธืง.

ื•ื•ื™ ื’ืจื•ืก ื˜ืฉื™ืกืขืœ, ื“ืขืžืึธืœื˜ ืขืก ืื™ื– ืึท ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืฉืคึผืจืึทืš ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืกืงืึทืœืึท. ืขืก ื“ื–ืฉืขื ืขืจื™ื™ืฅ ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” Verilog ืงืึธื“ ืึทื– ะฟะพะดั…ะพะดะธั‚ ืคึฟืึทืจ ืคึผืจืึทืกืขืกื™ื ื’ ืื•ื™ืฃ ASIC ืื•ืŸ FPGA. ืื–ื•ื™, ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื ื•ืฆืŸ OOP ืคึผืจื™ื ืกืึทืคึผืึทืœื– ื•ื•ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืจื˜ืœ.

ื‘ื•ื ื“ ืคึผืจืึทืกืคึผืขืงืก

ืขืงืกืคึผืขืจืฅ ื–ืึธื’ืŸ ืึทื– ื“ื™ ืื™ื ื™ืฆื™ืื˜ื™ื•ื• ืคื•ืŸ ื“ื™ ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ื•ื•ืขื˜ ืžืึทื›ืŸ ื“ื™ ืคึผืจืึทืกืขืกืขืจ ืžืึทืจืง ืžืขืจ ื“ืขืžืึธืงืจืึทื˜ื™ืฉ ืื•ืŸ ืึธืคืŸ ืคึฟืึทืจ ื ื™ื™ึทืข ืคึผืœื™ื™ึทืขืจืก. ืื™ืŸ IDC ืกืขืœืึทื‘ืจื™ื™ื˜ืึทื– ื“ื™ ื’ืจืึธื•ื™ื ื’ ืคึผืึธืคึผื•ืœืึทืจื™ื˜ืขื˜ ืคื•ืŸ ืึทื–ืึท ืคึผืจืึทื“ื–ืฉืขืงืก ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืึท positive ืคึผืจืึทืœ ืื•ื™ืฃ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืžืึทืฉื™ืŸ ืœืขืจื ืขืŸ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืื•ืŸ ืึทื™ ืกื™ืกื˜ืขืžืขืŸ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ.

ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ื˜ืฉื™ืคึผืก
/ ืคืึธื˜ืึธ ืคืจื™ืฆื˜ืฉืขื ืก ืคืจื™ืฅ PD

ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ืคึผืจืึทืกืขืกืขืจื– ื•ื•ืขื˜ ืื•ื™ืš ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืงืึธืก ืคื•ืŸ ื“ื™ื–ื™ื™ื ื™ื ื’ ืžื ื”ื’ ื˜ืฉื™ืคึผืก. ืึธื‘ืขืจ, ื“ืึธืก ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ ื‘ืœื•ื™ื– ืื•ื™ื‘ ื“ื™ ืœื™ื ื•ืงืก ื•ื•ื™ืงื™ืคึผืขื“ื™ืข ืงื”ืœ ืื™ื– ื‘ื™ื›ื•ืœืช ืฆื• ืฆื•ืฆื™ืขืŸ ื’ืขื ื•ื’ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.

ืขื ืœืขื›ืข ืคืจืื™ืขืงื˜ืŸ

ืื ื“ืขืจืข ืึธืจื’ืึทื ืึทื–ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ืื•ื™ืš ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืคึผืจืึทื“ื–ืฉืขืงืก ืฉื™ื™ึทื›ื•ืช ืฆื• ืขืคืขื ืขืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’. ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ื“ื™ CXL ืงืึธื ืกืึธืจื˜ื™ื•ื, ื•ื•ืึธืก ื™ื ื˜ืจืึธื•ื“ื•ืกื˜ ื“ื™ Compute Express Link ื ืึธืจืžืึทืœ ืื™ืŸ ืžื™ื˜ืŸ ืžืึทืจืฅ. ื“ื™ ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืื™ื– ืึทื ืึทืœืึธื’ ืฆื• OmniXtend ืื•ืŸ ืื•ื™ืš ืงืึทื ืขืงืฅ ืงืคึผื•, ื’ืคึผื•, ืคืคึผื’ืึท. ืคึฟืึทืจ ื“ืึทื˜ืŸ ื•ื•ืขืงืกืœ, ื“ืขืจ ื ืึธืจืžืึทืœ ื ื™ืฆื˜ ื“ื™ PCIe 5.0 ื•ื™ื˜ืึธื‘ื•ืก.

ืืŸ ืื ื“ืขืจ ืคึผืจื•ื™ืขืงื˜ ื“ืขื“ืึทืงื™ื™ื˜ืึทื“ ืฆื• ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืคึผืจืึทืกืขืกืขืจ ื˜ืขืงื ืึทืœืึทื“ื–ืฉื™ื– ืื™ื– MIPS Open, ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ืื™ืŸ ื“ืขืฆืขืžื‘ืขืจ 2018. ื“ื™ ืื™ื ื™ืฆื™ืื˜ื™ื•ื• ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ื“ื•ืจืš ื“ื™ ืกื˜ืึทืจื˜ืึทืคึผ ื•ื•ืึทื•ื•ืข ืงืึทืžืคึผื™ื•ื˜ื™ื ื’. ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื–ืขื ืขืŸ ืคึผืœืึทื ื™ืจื•ื ื’ ืขืคืขื ืขืŸ ื–ื™ืš ืึทืงืกืขืก ืฆื• ื“ื™ ืœืขืฆื˜ืข 32 ืื•ืŸ 64-ื‘ื™ืกืœ MIPS ื‘ืึทืคึฟืขืœืŸ ืฉื˜ืขืœื˜ ืคึฟืึทืจ ื“ื™ IT ืงื”ืœ. ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื’ืขืจื™ื›ื˜ ืฆื• ืื™ืŸ ื“ื™ ืงื•ืžืขื ื“ื™ืงืข ื—ื“ืฉื™ื.

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื“ื™ ืึธืคึฟืŸ ืžืงื•ืจ ืฆื•ื’ืึทื ื’ ืื™ื– ื‘ื›ืœืœ ืื ื’ืขื ื•ืžืขืŸ ื ื™ื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื•ื•ื™ื™ื›ื•ื•ืืจื’, ืึธื‘ืขืจ ืื•ื™ืš ืคึฟืึทืจ ื™ื™ึทื–ื ื•ื•ืึทืจื’. ืึทื–ืึท ืคึผืจืึทื“ื–ืฉืขืงืก ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ื’ืจื•ื™ืก ืงืึธืžืคึผืึทื ื™ืขืก. ื“ืขืจื™ื‘ืขืจ, ืžื™ืจ ืงืขื ืขืŸ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืึทื– ืื™ืŸ ื“ืขื ืœืขื‘ืŸ ืฆื•ืงื•ื ืคึฟื˜ ืžืขืจ ื“ืขื•ื•ื™ืกืขืก ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืขืคืขื ืขืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืกื˜ืึทื ื“ืึทืจื“ืก ื•ื•ืขื˜ ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื•ื™ืฃ ื“ื™ ืžืึทืจืง.

ืœืขืฆื˜ืข ืึทืจื˜ื™ืงืœืขืŸ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคึฟื™ืจืžืข ื‘ืœืึธื’:

ืึทืจื˜ื™ืงืœืขืŸ ืคึฟื•ืŸ ืื•ื ื“ื–ืขืจ ื˜ืขืœืขื’ืจืึทื ืงืึทื ืึทืœ:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’