Bylo vydáno openSUSE Leap 16 (cs). Ve výchozím nastavení přichází s vypnutou 32bitovou (ia32) podporou. Uživatelům však poskytuje možnost ji ručně povolit a užívat si tak hraní her ve Steamu, který stále závisí na 32bitových knihovnách. Změnily se požadavky na hardware. Leap 16 nyní vyžaduje jako minimální úroveň architektury procesoru x86-64-v2, což obecně znamená procesory zakoupené v roce 2008 nebo později. Uživatelé se starším hardwarem mohou migrovat na Slowroll nebo Tumbleweed.
Ministerstvo průmyslu a obchodu (MPO) ve spolupráci s Národní rozvojovou investiční (NRI) připravuje nový investiční nástroj zaměřený na podporu špičkových technologií – DeepTech fond. Jeho cílem je posílit inovační ekosystém české ekonomiky, rozvíjet projekty s vysokou přidanou hodnotou, podpořit vznik nových technologických lídrů a postupně zařadit Českou republiku mezi země s nejvyspělejší technologickou základnou.
… více »Radicle byl vydán ve verzi 1.5.0 s kódovým jménem Hibiscus. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.
Společnost OpenAI představila text-to-video AI model Sora 2 pro generování realistických videí z textového popisu. Přesnější, realističtější a lépe ovladatelný než předchozí modely. Nabízí také synchronizované dialogy a zvukové efekty.
UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.0, tj. první stabilní vydání založené na Ubuntu 24.04 LTS.
Rakouská armáda přechází na LibreOffice. Ne kvůli licencím (16 000 počítačů). Hlavním důvodem je digitální suverenita. Prezentace v pdf z LibreOffice Conference 2025.
Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) upozorňuje na sérii kritických zranitelností v Cisco Adaptive Security Appliance (ASA) a Firepower Threat Defense (FTD) a Cisco IOS, CVE-2025-20333, CVE-2025-20363 a CVE-2025-20362. Zneužití těchto zranitelností může umožnit vzdálenému neautentizovanému útočníkovi spustit libovolný kód (RCE). Společnost Cisco uvedla, že si je vědoma aktivního zneužívání těchto zranitelností.
Ochrana uživatelů a zároveň příznivé podmínky pro rozvoj umělé inteligence (AI). Ministerstvo průmyslu a obchodu (MPO) připravilo minimalistický návrh implementace evropského nařízení o umělé inteligenci, tzv. AI aktu. Český zákon zajišťuje ochranu občanům a bezpečné používání AI, ale zároveň vytváří pro-inovační prostředí, ve kterém se může AI naplno rozvíjet, firmy mohou využít jeho potenciál a nebudou zatíženy zbytečnou administrativou. Návrh je nyní v meziresortním připomínkovém řízení.
Dle plánu Linus Torvalds odstranil souborový systém bcachefs z mainline Linuxu. Tvůrce bcachefs Kent Overstreet na Patreonu informuje, že bcachefs je nově distribuován jako DKMS modul.
PIF, Silver Lake a Affinity Partners kupují videoherní společnost Electronic Arts (EA) za 55 miliard dolarů (1,14 bilionu korun).
Všechny naše dosavadní obvody měly jeden společný rys. Neobsahovaly žádný paměťový prvek, takže hodnoty na výstupu byly závislé pouze na vstupních signálech. Takovéto obvody nazýváme kombinační. Skládají se pouze z logických členů (AND, OR, NOT, ...) a neobsahují zpětné vazby. Naproti tomu obvody, které obsahují paměťové prvky, se nazývají sekvenční. Jejich výstup není určen pouze vstupními signály, ale i vnitřním stavem obvodu (stavem jednotlivých paměťových prvků).
Jak jsme již naznačili minule (Jak se píše procesor - 3 (Procesy)),
jako paměťový prvek budeme využívat pouze registr (tzn. nebudeme tvořit
zpětné vazby v logice). Podívejme se, jak můžeme registr vytvořit pomocí
VHDL. Využijeme k tomu entitu example_2
podobnou entitě z
minulého dílu s tím rozdílem, že obsahuje navíc dva vstupní signály -
RESET
a CLK
.
ENTITY example_2 IS PORT ( CLK, RESET: in std_logic; I1, I2: in std_logic; O: out std_logic ); END example_2; ARCHITECTURE arch_3 OF example_2 IS BEGIN p_1: process (RESET, CLK) begin if (RESET = '1') then -- asynchronni reset O <= '0'; elsif (CLK'event and CLK = '1') then -- reakce na vz. hranu O <= I1 and I2; end if; end process; END arch_3;
Do procesu jsme vložili dvě sekce. Jednu reagující na reset a jednu na vzestupnou hranu hodin. VHDL zápis konkrétně znamená:
RESET '1'
, spusť první sekci
příkazů (to odpovídá činnosti asynchronního resetu v registru - nastavení
implicitních hodnot po startu systému).elsif
) spusť druhou sekci příkazů, ale
pouze v případě, že došlo ke změně signálu CLK
a tento signál
má hodnotu '1'
(odpovídá náběžné hraně). Jinak řečeno, přiřaď
do výstupního signálu určenou logickou funkci, ale pouze v okamžiku
náběžné hrany hodin. Proto tento zápis vloží na konec cesty každého
výstupního signálu registr.Náš příklad bude tedy vypadat takto:
Podmíněný příkaz tvořící registr (if RESET... elsif
CLK...
) je dobré brát pokud možno dogmaticky. Dnešní
programovatelné obvody důrazně dělí obvod na logiku a registry a každý
zásah do této části VHDL kódu může tuto strukturu narušit. Programovatelné
obvody také mají dedikované hodinové rozvody, proto, pokud si nejsme
jisti, je dobré používat v celém obvodu pouze jeden signál
CLK
.
Nyní známe takřka všechno, co je třeba k napsání procesoru ve VHDL. Navrhněme proto další entitu - sadu registrů. Zvolme jednoduchou variantu sady čtyř osmibitových registrů, kde jedinou funkcí bude zápis do registrů a čtení z nich.
ENTITY register_set IS PORT ( CLK, RESET: in std_logic; I: in std_logic_vector(7 downto 0); O: out std_logic_vector(7 downto 0); ADDR: in std_logic_vector(1 downto 0); WR: in std_logic ); END register_set; ARCHITECTURE behavioral OF register_set IS signal R1, R2, R3, R4: std_logic_vector(7 downto 0); BEGIN p_1: process (RESET, CLK) begin if (RESET = '1') then -- asynchronni reset R1 <= (others => '0'); R2 <= (others => '0'); R3 <= (others => '0'); R4 <= (others => '0'); elsif (CLK'event and CLK = '1') then -- reakce na vz. hranu if WR = '1' then if A = "00" then R1 <= I; elsif A = "01" then R2 <= I; elsif A = "10" then R3 <= I; else R4 <= I; end if; end if; end if; end process; O <= R1 when A = "00" else R2 when A = "01" else R3 when A = "10" else R4; END behavioral;
V entitě definujeme vstupní a výstupní signály. CLK
a
RESET
jsou důležité pro synchronizaci registrů.
I
a O
jsou vstupní a výstupní datové sběrnice,
A
vybírá jeden ze čtyř registrů. Pomocí signálu
WR
zapisujeme do jednotlivých registrů. Signál pro čtení
není třeba, na výstupní sběrnici je vždy hodnota aktivního registru.
V deklarační části architektury si definujeme čtyři pomocné osmibitové
signály, pomocí kterých vytvoříme vlastní registry. Hlavní část těla
architektury tvoří proces, který implikuje vytvoření registrů a realizuje
zápis. Kód nám říká, že v případě aktivního signálu WR
má být
přiřazena hodnota sběrnice I
do jednoho ze signálů
R1
- R4
. Toto přiřazení se má provést pouze v
okamžiku náběžné hrany signálu CLK
. Pro syntezátor to tedy
znamená vytvoření čtyř osmibitových registrů se vstupem I
,
výstupem R1
- R4
a povolovacím signálem (chip
enable, CEx
) tvořeným ze signálů WR
a
A
.
Výstup O
je tvořen pomocí signálu WHEN
. V
tomto případě to bude multiplexor, který vybírá výstup jednoho z registrů
v závislosti na adrese A
.
Na obrázku je znázorněno zjednodušené schéma pro 2 registry:
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
začína to konečne vyzerať, že sa s tým dá niečo robiť... nenapíšete čitateľom nabudúce ukážkový 64bitový procesor? :)))
A teraz Vážne! Chcel som sa spýtať, či je existujú postupy na optimalizáciu hotových návrhov? Možno niekdo potrebuje usporiť a radšej by použil viacero lacnejších odvodov, ako pár drahšich.
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_arith.ALL; ENTITY registers IS GENERIC ( data_w : natural := 8; addr_w : natural := 2; num_regs : natural := 4 ); PORT ( res : IN std_logic; clk : IN std_logic; wr_en : IN std_logic; addr : IN std_logic_vector(addr_w-1 DOWNTO 0); data_in : IN std_logic_vector(data_w-1 DOWNTO 0); data_out : OUT std_logic_vector(data_w-1 DOWNTO 0) ); END registers; ARCHITECTURE rtl OF registers IS SUBTYPE reg_t IS std_logic_vector(data_w-1 DOWNTO 0); TYPE reg_arr_t IS ARRAY (num_regs-1 DOWNTO 0) OF reg_t; SIGNAL rg_ar_reg : reg_arr_t; SIGNAL rg_ar_cmb : reg_arr_t; SIGNAL rg_wr_cmb : std_logic_vector(num_regs-1 DOWNTO 0); SIGNAL rg_sel_cmb : std_logic_vector(num_regs-1 DOWNTO 0); BEGIN gen_reg_array: FOR i IN 0 TO num_regs-1 GENERATE ---- -- Registers Array ---- rg_ar_reg_proc: PROCESS (res, clk) BEGIN IF (res = '1') THEN rg_ar_reg(i) <= (OTHERS => '0'); ELSIF (clk'EVENT AND clk ='1') THEN rg_ar_reg(i) <= rg_ar_cmb(i); END IF; END PROCESS rg_ar_reg_proc; ---- -- Register selection ---- sel_reg_cmb_proc: PROCESS (addr, wr_en) VARIABLE sel_v : std_logic_vector(num_regs-1 DOWNTO 0); BEGIN sel_v := (OTHERS => '0'); sel_v(conv_integer(unsigned(addr))) := '1'; rg_sel_cmb <= sel_v; END PROCESS sel_reg_cmb_proc; ---- -- Registers array next ---- rg_ar_cmb_proc: PROCESS (data_in, rg_ar_reg, rg_sel_cmb, wr_en) BEGIN IF (rg_wr_cmb(i)= '1' AND wr_en='1') THEN rg_ar_cmb(i) <= data_in; ELSE rg_ar_cmb(i) <= rg_ar_reg(i); END IF; END PROCESS rg_ar_cmb_proc; END GENERATE gen_reg_array; ---- -- Data output selection ---- data_sel_cmb_proc: PROCESS (rg_ar_reg, addr) VARIABLE addr_v : natural; BEGIN addr_v := conv_integer(unsigned(addr)); data_out <= rg_ar_reg(addr_v); END PROCESS; END rtl;I tady je co vylepsovat. Napriklad registrovat vystup. Vasi poznamku o hokeji v casovani jsem nejak nepochopil. Co pipeline??? Jinak v tom Vasem kodu je chyba a nejde zkompilovat ("ADDR"!="A").