Category: it

Улыбка

Сетевой диск сделай-сам

Чего только народ не строит на процессорах MIPS. Вот, к примеру, самодельное сетевое хранилище на шесть жёстких дисков. Процессор MediaTek MT7621A (MIPS 1004Kc), два двухпоточных ядра до 1.2ГГц под управлением Debian Linux. Документация и схемы выложены на Гитхаб.

Cross-post from: http://vak.dreamwidth.org/448964.html

Улыбка

Хранение паролей

Я наконец нашёл приемлемый способ хранения интернетовских паролей: утилита pass. Пароли шифруются посредством GPG и хранятся на закрытом GIT-сервере. В базовом виде pass это утилита командной строки. Есть GUI для Linux, MacOS, Windows, а также приложение для Android. Вариант для iOS пока в разработке.

Cross-post from: http://vak.dreamwidth.org/447573.html

Улыбка

Куда мигрируют программисты

В таблице для каждой пары языков X и Y показана активность обсуждения темы "Почему мы мигрировали с языка X на язык Y". Что интересно - побеждает язык Go (16.41%). На втором месте Си (14.26%).



Cross-post from: http://vak.dreamwidth.org/447155.html

Улыбка

The Go programming language

Тридцать лет назад у меня родился сын, и я проводил много времени, прогуливаясь с детской коляской по живописным окрестностям славного города Долгопрудного. Под мышкой я держал невероятную ценность, доставшуюся мне по удачному стечению обстоятельств: книжку "Язык программирования Си" Кернигана/Ритчи. Присаживался на лавочки и тщательно штудировал мудрость далёкий американских инженеров. Это было еще первое издание, аж 1985 года. Пытался найти обложку в сети - не смог.

Сейчас получаю такое же интеллектуальное удовольствие от книжки "The Go Programming Language" Кернигана/Донована. Великое дело сделали товарищи: сваяли язык 21 века. Не зря он сейчас вытесняет Джаву и прочих из серьёзных проектов.



Cross-post from: http://vak.dreamwidth.org/441453.html

Улыбка

Однопортовые асинхронные компоненты

В мире асинхронной логики всё не так. Если для традиционной логики основные кубики это триггеры, защёлки, мультиплексоры и т.п., то здесь набор элементарных компонентов совсем другой. Теоретическое обоснование дал математик Кис ван Беркель в книжке "Handshake circuits: an asynchronous architecture for VLSI programming" (есть ранний вариант в виде PDF). Более практичный список асинхронных примитивов можно найти в главе 13 "The Breeze Components" документации по компилятору Balsa.

Принципы построения асинхронных компонентов:
1. Каждый компонент имеет один или несколько портов.
2. Каждый порт состоит из двух направлений: передача и приём.
3. Направление передачи может состоять из нескольких проводов, при этом приём имеет всего один провод. Такой порт называется передающим (output).
4. Направление приёма может состоять из нескольких проводов, при этом передача имеет всего один провод. Такой порт называется принимающим (input).
5. Направление приёма и направление передачи могут иметь по одному проводу. Такой порт называется синхронизирующим (sync или nonput).
6. Порт называется ведущим (master), если сначала становится активным (ненулевым) передающее направление, и затем ожидается ответ на приёмном направлении.
7. Порт называется ведомым (slave), если сначала ожидается ненулевой сигнал на приёмном направлении, и затем формируется ответ на передающем направлении.
8. Компонент обязан подчиняться принципу самоинициализации: когда все входные сигналы всех портов равны нулю (неактивны), все выходные сигналы также обязаны перейти в нулевое состояние.

Таким образом, возможны шесть типов портов: master_output, master_input, slave_output, slave_input, sync_output и sync_input. Используя конструцию interface языка SystemVerilog из предыдущего поста эти шесть типов можно определить следующим образом:
Collapse )


Cross-post from: http://vak.dreamwidth.org/438026.html

Улыбка

Разница между АйТи и программистом

Часто наблюдаю, как профессию программиста называют "IT-специалистом", обычно в рекламе разных образовательных услуг в странах бывшего СССР. Тут есть определённая ловушка. Между этими специальностями есть две большие разницы, как говорят в Одессе. Вот данные с сайта glassdoor.com:





Для IT-специалиста: количество вакансий 88250, средняя зарплата $69k, в кремниевой долине $77k.

Для программиста: 181173 вакансий, средняя зарплата $95k, в долине $110k.

Если вы укажете в резюме, что вы IT-специалист, вы не пройдёте на вакансию программиста. Не ошибитесь.

Cross-post from: http://vak.dreamwidth.org/434895.html

Улыбка

MIPS I6500

Новая разработка нашей конторы, ядро MIPS I6500, будет применяться в самодвижущихся тележках, в частности Тесла.



Мультикластерная организация позволяет разместить на одном кристалле до 64-х кластеров по 6 ядер, каждое из которых имеет по 4 потока. В сумме на таком чипе можно будет запустить 64*6*4 = 1536 линуксов. :)

Из прочих существенных ништяков там есть аппаратная виртуализация и SIMD.

За последние три года мне тоже довелось приложить руку к этому проекту - в области технологии верификации и разработки образцовой референтной функциональной модели процессора. А Юра panchul, так даже успел вписать туда пару сотен строчек RTL кода.
Улыбка

Программирование на языке Balsa называется 'бальсамирование'

В поисках неортодоксальных подходов к разработке хардвера, в частности в области асинхронной логики, я неожиданно для себя открыл интересный язык Balsa, и стоящую за ним методику, называемую 'Handshake Circuits'. Взгляните, вот программа вычисления наибольшего общего делителя на Бальсе:
procedure GCD (
    input x: byte;
    input y: byte;
    output z: byte
) is
local 
    variable a, b: byte
begin
    loop
        x -> a || y -> b;
        loop
            while a /= b then
            begin
                if a > b
                then a := (a - b as byte)
                else b := (b - a as byte)
                end
            end
        end;
        z <- b
    end
end
При компиляции она превращается в такую асинхронную схему:

Дальше она преобразуется в Verilog и синтезируется в собственно микросхему. Разве не прелесть? Не одним верилогом жив человек! :)

Бальса разрабатывалась в 1998-2010 годах в университете Манчестера. Её исходные тексты доступны на сайте университета на условиях лицензии GPL. Подход подробно описан в диссертации Andrew Barsley "Balsa: An Asynchronous Circuit Synthesis System".