#007 - Gdy bug w krzemie drzemie...

1:03:34
 
Udostępnij
 

Manage episode 262218701 series 2566477
Stworzone przez Semihalf, odkryte przez Player FM i naszą społeczność - prawa autorskie są własnością wydawcy, a nie Player FM, a dzwięk jest przesyłany bezpośrednio z ich serwerów. Naciśnij przycisk Subskrybuj, aby śledzić aktualizacje Player FM, lub wklej adres URL kanału do innych aplikacji podcastowych.
W siódmym odcinku rozmawiamy o ciekawym aspekcie naszej pracy tj o błędach w układach krzemowych.
Praca z producentami układów krzemowych daje niecodzienną możliwość zajrzenia za kulisy rewolucji naszych czasów tj miniaturyzacji układów cyfrowych. Osławione prawo Moore'a niesie ze sobą wykładniczy wzrost gęstości tranzystorów. Co za tym idzie z biegiem czasu układy stają się coraz bardziej skomplikowane a tym samym pomyłki stają się nieuniknione.
W trzech krótkich historiach opowiadanych przez członków załogi Semihalf, staramy się przybliżyć wam ciekawe strony pracy z najnowszą technologią, często niosącą bardzo intensywne tygodnie “walki” na styku oprogramowania i sprzętu. Jeśli zastanawialiście się dlaczego aktualizacje firmware (np BIOSU) są konieczne oraz dlaczego procesory zaraz po premierze rynkowej czasami po prostu nie działają jak reklamuje producent, to ten odcinek powinien odpowiedzieć na wasze pytania.
Prowadzący: Radosław Biernacki, Jan Dąbroś, Marcin Wojtas, Stanisław Kardach
Hashtag: FPGA, VHDL, Ryzen, ARM, hardware, symulator, emulator, bug
### Plan odcinka
# 6:10 - Od czego zaczyna się projektowanie układów krzemowych
# 7:30 - Testowanie i praca z SW - symulatory i emulatory
# 9:20 - Dlaczego emulacja jest czasochłonna?
# 11:50 - Narodziny krzemu - tapeout
# 15:10 - Marcin - historia wdrożenia zarządzania energią w ARMv8
# 23:30 - Janek - historia błędu przekierowania przerwań do Arm Trustzone
# 30:40 - Staszek - historia błędu w procesorze sieciowym do zastosowań DataPlane
# 34:10 - Staszek - historia błedu w ARMv8 w instrukcjach LDP/STP
# 42:08 - Łatki w firmware
# 48:47 - Quirki i upstream do kernela Linuxa
# 1:01:00 - Podsumowanie, jak błędy w krzemie manifestują się u użytkowników
### Linki
# 6:20 - Fabless chip manufacturing - https://en.wikipedia.org/wiki/Fabless_manufacturing
# 8:50 - Cadance Palladium - https://www.cadence.com/en_US/home/tools/system-design-and-verification/acceleration-and-emulation/palladium-z1.html
# 12:45 - Tape-out - https://en.wikipedia.org/wiki/Tape-out
# 18:00 - Poziomy uprzywilejowania (Exception levels) na ARMv8
Prezentacja ARM Trusted Firmware (ale z fajnym opowiadaniem jak Exception Levels działają) https://www.slideshare.net/linaroorg/arm-trusted-firmareforarmv8alcu13
Artykuł w magazynie "Programista" numer #63, 08/2017r. "Na granicy światów – technologia bezpieczeństwa ARM TrustZone"
Dość szczegółowy opis technologii ARM TrustZone http://infocenter.arm.com/help/topic/com.arm.doc.prd29-genc-009492c/PRD29-GENC-009492C_trustzone_security_whitepaper.pdf
# 18:35 - Power Management na ARMv8
Całość problemu opisana w magazynie “Programista” numer #56, 01/2017r. “Zarządzanie energią w ARMv8”
Opis przebiegu usypiania systemu podczas Suspend-To-Ram https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/power/suspend-and-cpuhotplug.rst
Opis funkcji zwrotnych zarządzania energią w ARM Trusted Firmware https://github.com/scorp2kk/atf/blob/master/docs/platform-migration-guide.md#22-composite-power-state-framework-platform-api-modifications
# 35:10 - Problem atomowości instrukcji LDP/STP:
https://developer.arm.com/docs/ddi0487/latest/arm-architecture-reference-manual-armv8-for-armv8-a-architecture-profile - Arm Architecture Reference Manual, rozdział B2.2.1 Requirements for single-copy atomicity
https://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM.Reference_Manual.pdf - ARMv8 Instruction Set Overview, rozdział 5.2 Memory Access
# 51:30 - Upstream quirka do ECAM w ARMv8
Dyskusja na listach mailingowych odnośnie możliwości odstępstw od generycznego działania PCIE na ARMv8 opisanego tablicami ACPI https://lkml.org/lkml/2016/9/20/391
Opis Extended Configuration Space (ECAM) dla standardu PCIE https://wiki.osdev.org/PCI_Express#Extended_Configuration_Space
Obejście problemu niezgodności ze standardowym kontrolerem przy zastosowaniu sztuczki z tablicami ACPI https://github.com/tianocore/edk2-platforms/commit/a273cb49fe4f98f662bacb69cfd323722e0993a2#diff-e57f3ee89616dd138928c3655287b0d0
Proste rozwiązanie problemu na poziomie sterownika w Linuksie - dozwolone tylko przy opisie poprzez Device Tree https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/pci-host-generic.c#n27

10 odcinków