Pull to refresh

Comments 57

и пытаетесь что-то напечатать. А принтер не подсоединяется.

Типикал юзер

.... Да, да - эти выскочки, лабающие архитектуру процессоров, они даже принтер подключить не в состоянии!

Меня по жизни принтеры не любят. У меня зажевывали бумагу и конфликтовали с драйверами вообще все принтеры, которыми я когда-либо пользовался: барабанные и матричные, струйные и лазерные, фотопринтеры и плотеры. Даже перфосчитыватель рвал мои перфоленты, когда я приходил к маме на работу.

Принтеры вообще мало кого любят, а еще они чувствуют срах)

UFO just landed and posted this here

Вот ответ настоящего "Линуксойда"!

На 21 секунде из щелей выползают монстры жующие бумагу

Юрий, для полноты картины и смеха (фана) ради, попробуйте как-нибудь перезаправить картридж для лазерника со сменой фотовала. Не получится - можете смело писать :"Принтеры меня не любят" :)))))

UFO just landed and posted this here

... и уронить на пол контейнер с отработкой ...

Вот чисто по логике: приведенный вами модуль на двух триггерах, это, в терминах программирования, поток, который пробуждается по фронту сигнала CLK, копирует две переменные, и засыпает до следующего события. Так что, написавшего такой модуль можно считать программистом. Просто программа выполняется не миллионами транзисторов, а несколькими десятками.

Под потоком вы имеете в виде thread (программый реализованный с помощью прерываний или аппаратный, реализованный на multi-threading процессоре)? Или вы говорите об алгоритме дискретного моделирования с очередью событий?

Так или иначе: эти два D-триггера - это просто две конструкции из кремния, с примесями бора и фосфора, а также медными (в давние времена - алюминиевыми дорожками).

По-моему это был Федерико Фаджин, проектровщик первого микропроцессора Intel 4004, который говорил, что они проектировали такие схемы с помощью цветного картона, как дети делают аппликации. Такая аппликация - это программа? Ее составитель - программист?

Под потоком вы имеете в виде thread
Да, именно его.
Так или иначе: эти два D-триггера — это просто две конструкции из кремния
Тем не менее, описание на верилоге может быть как «скомпилировано» в кремний, так и исполнено на интерпретаторе (симуляторе), или преобразовано в подпрограмму обработки прерываний, скажем, мелкого МК.
Такая аппликация — это программа? Ее составитель — программист?
Почему нет? Если абстрагироваться от конкретного применения, то аппликация есть один из способов описания программы для специфичной реализации в кремнии на очень низком уровне. Для примера можно привести всякие блок-схемы, UML и прочее графическое представление из области «большого» программирования.

Ну тогда и писательство - програмирование. Берет какой-нибудь Пелевин абстрактные объекты, героев, и они взаимодействуют друг с другом через логику сюжета, обмениваясь сигналами-действиями и порождая события. А устройствами ввода-вывода являются мозги читателей.

Позвольте, уважаемый Юрий, дополнить одну деталь - всё это функционирует в Виртуальной Машине "Ум/Интеллект" с супервизором "Сознание" ("Душа"). При этом, в компоненте "Ум" уже находятся описания классов или создаются динамически, а в вычислителе "Интеллект" загружены различные системы оценок, дополняемые динамически. А супервизор "Душа" наблюдая за взаимодействием объектов в компоненте "Ум" и выносимых решений вычислителем "Интеллект" модифицирует свою структуру "Качества/Наклонности" ("Суперклассы") такие как "Любовь", "Сопереживание", "Счастье" и т.д., то что за пределами этой системы называется "Человеческими /Нравственными/ Ценностями".

Короче - все сплошное программирование. И Маск верит, что весь наш мир - программная симуляция.

Отличие программирования от писательства в том, что программисты имеют дело с формальными системами. Одна запятая не в том месте — и программа мертва. Одна перемычка между CLK и GND — и железка мертва. Пелевин же может делать любые ошибки и опечатки, и это почти никак не скажется на результатах его работы.

Отнюдь. Напишите на верилоге два модуля, работающие на разной частоте от разных clock-ов, соедините их проводами, и если не будете делать специальных трюков, получите метастабильность. Это уже явление физического мира.

Это как раз то, что НЕ делают ИТ-шники/программисты/RTL-писатели.

RTL-писатель несомненно рассматривает метастабильность. Это популярный вопрос на любых интервью и есть статьи разбирающие как писать RTL чтобы избежать метастабильность, например http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf

Так же само RTL несомненно рассматривает как RTL код изменяет динамическое энергопотребление за счет минимизации переключения как D-триггеров, так и комбинационной логики. Для этого вводится пара "широкий регистр для данных + бит для enable" и эффект такого кода проверяется с помощью Synopsys PTPX и Cadence Joules, которые выдают отчет в милливаттах, используя waveform c экстрагированными со время синтеза паразитными емкостями и сопротивлениями. А это физика!

О чём я и говорю. Метастабильность недопустимый эффект в проектировании. От неё избавляются всеми способами и приходят к формальной математической системе, без физики.

Я хочу сказать, что в области где работает RTL-инженер не все является однозначной формальной системой. В частности, от метастабильности идет избавление не на уровне ASIC library или synthesis tools, а на уровне писания кода на verilog, который является против этого устойчивым ( с помощью снижения вероятности метастабильности синхронизацией через 2-3 триггера + специальных приемов типа передачи информации через gray codes, чтобы избежать попадания логически одновременных сигналов в разные такты)

В идеале, об этом должен думать не RTL-писатель, а должно быть переложено на инструменты. Но видимо пока не получается.

RTL без физики (в частности без знания задержек в пикосекундах на слои логики) - это не RTL. Ибо часть обязанностей RTL-инженера - это на основе отчета о тайминге поменять микроархитектуру и код на верилоге, если что-то сильно не влезает по задержкам в такт (слабые невлезания можно массажировать тулами).

А почему бы и нет, собственно? Процесс работы писателя очень похож на программирование: сперва, придумывается сюжет в общих чертах. Потом, создаются сущности, которые выполняют заданный сюжет. Это герои, их характеры, их поступки, побочные сюжетные линии. Чем не TDD? А потом мозг читателя, который, несомненно, является компьютером, воспроизводит этот сюжет, превращая его в нервные импульсы.

Алгоритмы - это то, что пришло из нашего быта. Программируя, мы пытаемся обучить компьютер выполнять действия, которые раньше выполнял наш мозг: считать, представлять информацию в различных формах. Программирование тесно связано с тем, как человек может представить и обработать информацию. Иначе, в программировании не было бы смысла. Все формы представления данных, все алгоритмы могут быть теоретически обработаны мозгом человека. Поэтому, разница между повседневной деятельностью человека и программированием сильно размыта.

Что же касается ваших заявлений, о том, что программист - не айтишник только потому, что у вас IT департаментом называется служба администрирования, то как же нам быть, если в другой компании IT департаментом назовут отдел разработки? И как быть с официальной классификацией трудовой деятельности в РФ, где разработка ПО является частью деятельности в сфере информационных технологий?

*** приведенный вами модуль на двух триггерах, это, в терминах программирования, поток, который пробуждается по фронту сигнала CLK, копирует две переменные, и засыпает до следующего события. ***

Тут важно понимать, что мы имеем дело с двумя потоками, а не одним - по потоку на каждый триггер. Потому что первый из них записывает новое значение из входа в свое новое состояние, которое будет сохранятся весь следующий цикл, а второй - записывает текущее состояние первого триггера в свое новое состояние.

*** Просто программа выполняется не миллионами транзисторов, а несколькими десятками. ***

То есть вы идеологически против аппаратно-программного дуализма?

Аппаратно-программный дуализм
Аппаратно-программный дуализм
То есть вы идеологически против аппаратно-программного дуализма?
Ну да, он несколько надуман: раньше вещи выполненные в «железной» логике (на восьми 155ТМ2, в данном случае), не считали процессором, а по сути, это он и есть, просто очень маленький и с «масочно» зашитой жесткой логикой. А то, что он прекрасно описывается на Верилоге, лишь довершает стройную картину.

Для разнообразия, возьмите более сложную систему типа навороченного фазового детектора: там будет и память, и машина состояний, и обработка ошибок.

Ну хорошо, а HTML код - программа?

HTML — это язык разметки, изначально неполный по Тьюрингу. Его можно считать своего рода программой для обработчика этого HTML. С другой стороны, язык TeX полон по Тьюрингу и его можно назвать как языком программирования, так и языком разметки.

Это все конечно интересные рассуждения, но в реальной жизни в американских, [западно]европейских и [южно и восточно]азиатских электронных компаниях никто синтезируемый код на верилоге программой не называет. Говорят просто "RTL': "напишите RTL", "готов RTL?" , а не "напишите программу?" , "готова ли программа?" итд. Вы считаете все компании должны поменять традицию?

Вы считаете все компании должны поменять традицию?
Нет, не считаю, т.к. в данном случае речь идет о частном случае. Мы же тоже говорим «написать прошивку» для МК, а не программу. А под программированием понимаем перенос прошивки в ПЗУ.

Вот что устаканится лет через сто, то и примем за правильный вариант.

Дёрнул пин на андуринке уже программист, повесил на пин внешний светодиод уже айтишник

"повесил на пин внешний светодиод уже айтишник"
Почему айтишник, схемотехник/электронищик же?

повесил на пин внешний светодиод уже айтишник

Hardware Engineer же!

UFO just landed and posted this here
UFO just landed and posted this here

Скажите, вот это "айти" "не айти" - согласно каких определений? Насколько я, и многие другие, привыкли думать, IT - это информационные технологии. Википедия с этим, вроде бы, тоже согласна. А тут выясняется.

Внутренние особенности, ярко выраженные в СНГ(ты же программист, почини принтер). Не знаю, есть ли подобное на западе.
Астрофизка или микробиолога не назвать сотрудником ИТ отрасли, хоть он и может быть неплохим специфичным программистом.

Я все ждал, что кто-нибудь начнет ссылаться на википедию. Но это тот случай, когда википедия сама по себе, а реальная жизнь сама по себе. Я работал в MIPS (процессоры), Imagination Technologies (они делали GPU в ранних айфонах), Juniper Networks (чип для роутера), Samsung в партнерстве с AMD (GPU), и во всех этих компаниях есть IT Department вот с теми функциями, которые я описал. И во всех из них на проблемы на рабочем месте с принтерами говорят "обратитесь в Ай-Ти". Как и в остальных таких компаниях вокруг.

не про википедию, а про то что на редкость читабильная статья, что такое IT типа и ежу известно :)

>работал ... Juniper Networks (чип для роутера) ....

много знакомых было оттуда, в этом маленьком мире, например когда-то участвовал в этом проекте (4200 RS 17 slot + aggregation up to 32 shelves)

https://www.ven-tel.com/docs/CN-4200_Product-Brochure.pdf

Во многих айтишных компаниях тоже есть айтишный отдел с айтишными задачами (починить принтер). Как-то все уживаются, гордо называя себя айтишниками))

Наверное речь идет о российской или украинской компании? Я в курсе что в странах бывшего СССР значение слово "айтишный" шире, чем в хайтеке Америки.

Я, к примеру, в своей компании могу назвать IT-отделом хоть уборщиц. Разве это поменяет смысл термина "информационные технологии"? Разве IT-компании - это те, которые чинят принтеры? Говорить, что программист - не айтишник - это все равно, что утверждать, что бегун, это не спортсмен, а легкоатлет. Ну потому, что в департаменте спорта сидит пузатый дядька, который никуда не бегает а перекладывает бумажки. И вот он - настоящий спортсмен, угу.

Вы пытаетесь меня логически убедить в чем-то, что может быть для вас логично, но противоречит местной (в Silicon Valley) традиции. Когда здесь кто-то говорит "IT Specialist", то он имеет в виду вот что:

Ни один из программистов-разработчиков продуктов компании, ни в одной из компаний за 30 лет как я работаю в Калифорнии, не разу не назвал себя "IT specialist". "IT" - так называют людей, поддерживающих внутрикорпоративных сеть и внутренние базы данных. Да, внутри IT тоже могут писать программы, я согласен, но это программы для внутреннего пользования внутри компании, не для продажи наружу как компанейский продукт. В этом отличие в использовании слова IT между технологическими компаниями в штатах и в странах бывшего СССР, где слово IT используется в гораздо более широком смысле.

Или вот еще что Гугл показывает по слову "IT company". Это компания которая устанавливает софтвер и хардвер и делает поддержку, чтобы все это работало в некоторой организации. Иными словами, это сервис компания, не продуктовая компания:

Далее, вот статья, которая так и называется: "в чем разница между IT Company и Software Company"?

https://blog.unosquare.com/whats-the-difference-between-it-and-software-companies

Читаем:

"What is an IT company?

An IT (information technology) company oversees the use of devices storing, retrieving, and sending information.

What is a software company? 

A software company creates products that take the form of various types of software. They work on technology, distribution, and product development."

Иными словами, как я написал: IT Company - это компания, которая устанавливает продукты в некотором бизнесе, чтобы он работал. Это отличается от software company, которая такие продукты разрабатывает.

А вы пытаетесь всех убедить что некий частный казус наименований можно экстраполировать на всю индустрию наплевав на значение слов и таксономию терминов. Если человек не является формальным сотрудником IT-отдела, это вовсе не означает, что он не работает в сфере информационных технологий.

Я вам говорю, как говорят. Помимо работы в Synopsys (#1 софтверная компания в средствах автоматизации проектирования), Samsung, Juniper Networks, MIPS я делал проекты с Intel, Apple, AMD, знаю людей в Nvidia и кучи других компаний. Никто из разработчиков продуктов этих компаний не говорит "I work in information technology". Говорят "I work in tech", "in electronic design", "in software/hardware engineering", "in computer science", "in electrical engineering".

Берем википедию, статью "Information technology". Читаем два первых предложения:

https://en.wikipedia.org/wiki/Information_technology

"Information technology (IT) is the use of computers [ использование компьютеров] to create, process, store, retrieve and exchange all kinds of electronic data[1] and information. IT is typically used within the context of business operations [ в контексте работы бизнеса ] as opposed to personal or entertainment technologies.[2]"

Обратите внимание, что речь идет об использовании компьютеров, а не о разработке компьютеров, микросхем для них, операционных систем итд.

Далее обратите внимание, что речь идет именно об использовании компьютеров для организации работы бизнеса, то есть обслуживание компании.

То есть программисты не используют компьютеры в контексте работы бизнеса? Интересно. Я тоже, вроде бы, не вчера родился и успел кое-где поработать. Моя карьерная география тоже не ограничена постсоветским пространством. У вас говорят так, а у нас - не так. Ок.

Я допускаю (хотя не знаю), что в Восточной Европе, а также в компаниях, которые используют программистов, но не делают программные продукты (например в банках, хотя я там никогда не работал), могут использовать термин Information Technology в широком смысле, как в странах пост-советского пространства. Если вы мне приведете примеры компаний, в которых это толкуется в широком смысле, мне это будет интересно.

Это какой-то... хардкор!

Пожалуй останусь на пару уровней абстракции повыше.

Хотел бы выразить благодарность за Школу цифрового дизайна. Участвовал в осенней школе. Очень понравилось. Особенно часть про RISC-V.

Юрий, хотелось бы, чтобы школа была доступна и для специалистов из других областей электроники, но желающие погрузиться в мир RTL или уже имеющие небольшой опыт, но жаждущие знаний.

Ведь можно привлечь молодых специалистов из смежных областей для развития направления.

Может будет доступна такая возможность?

Спасибо! Мы рассматриваем разные варианты расширения - договариваемся со спонсорами и университетами. Мест меньше чем желающих, поэтому наверное будем расширять площадку - не только в Сколково, но и в МИЭТ, ВШЭ МИЭМ, МИРЭА и других вузах.

Как вам вариант, когда битстрим-файл называют прошивкой ПЛИС?

И если вспомнит про российские ГОСТы и не относить проект для ПЛИС к программам, то как их оформлять? Как часть конструкторской документации?

И RTL для FPGA, и классическая последовательная программа для CPU обладают фундаментальными общими свойствами. И то, и то не изделия, а особая runtime технология, применяемая к изделию уже у пользователя и наделяющая заготовку необходимым функционалом.

Это прекрасно, но ровно тот же RTL код на верилоге можно синтезировать и для ASIC (с минимальными изменениями которые можно изолировать - скажем блоки PLL) где он превращается в фиксированные ячейки ASIC library и медные дорожки, что точно не программа. И использование в ASIC бьет использование в FPGA по тиражности изделий на порядки.

Тут я с вами и не спорю, скорее хочу дополнить. Проектирование RTL, написание программ для ПК и смартфона, создание моделей для 3D-принтера - все это разработка. То есть создание новой технологии, которая позволяет из заготовки создать нечто с нужными свойствами, решающее проблемы людей. Эти технологии объединяет то, что они применяются не на заводе, а уже у конечного пользователя. Первыми ласточками были программы, вот люди и переносят термин по-аналогии.

Если же вы ограничили термин "программа" только последовательно выполняемыми алгоритмами, то, конечно, RTL - не программа, это описание параллельного алгоритма (закона смены состояний от шага к шагу). Который может быть отражен, в том числе, и в медные дорожки.

*** Эти технологии объединяет то, что они применяются не на заводе, а уже у конечного пользователя ***

Нет, я же написал, что RTL синтезируемый для ASIC - это схема железа, идущего на завод. Она фиксируется на заводе в виде, в котором ее нельзя поменять. Даже если вскрыть микросхему и попробовать поменять дорожки из меди и что-то перепаять, не получится - сформированы разные структуры транзисторов в процессе производства.

Я в посте нарисовал слайд на котором код превращается в GDSII файл. GDSII файл - это не прошивка, это именно геометрические изображения слоев кремния с примесями бора и фосфора, а также металлические дорожки из меди:

На основе GDSII файла делаются маски, которые используеются для печати микросхем. Это не просто изменение порядка соединений уже существующих ячеек. В технологии стандартных ячеек (ASIC standard cells) рядами выставляются разные, специально для этой схемы, ячейки. Они имеют одинаковую высоту для упрощения роутинга, но вы можете наглядно увидеть что ячейки разные, то есть это не прошивка, а разное железо, на заводе:

вот как выглядят индивидуальные ячейки в ASIC library. Они не унифицированны, как CLB в FPGA. Они фиксированны и имеют разную ширину и структуру:

Я понимаю ваш тезис про FPGA. Вы хотите расширить слово "программа" до конечного автомата, после чего вписать их по ГОСТу как программу. Но для ASIC синтезируемый RTL код становится эквивалентом геометрической схемы и тем самым, да, является, если вы хотите толковать по ГОСТу (я не читал соотвествующие ГОСТы, я просто верю вам на слово что там вот такое написано) конструкторской документацией.

Так или иначе, RTL никто ни в MIPS, ни в Juniper, ни в Samsung в хардверной группе (semiconductor IP и ASIC) ни программой, ни прошивкой (firmware?) не называет.

Sign up to leave a comment.

Articles