«Папа» Эльбруса. Ноутбук на VLIW процессоре TransMeta Crusoe TM5800 с динамической ретрансляцией из 2003 года

в 8:01, , рубрики: bodyawm ништяки, timeweb_статьи_выходного_дня, TM5800, TransMeta, Windows XP, Блог компании Timeweb Cloud, гаджеты, дешевые покупки, дешман, Компьютерное железо, ништяки, ноутбук, Ноутбуки, ретрогаджеты, ретроспектива, старый ноутбук
В некоторых своих статьях, при малейшем упоминании Эльбруса и МЦСТ в положительном ключе, некоторые мои читатели пытались поднять тему а-ля «Эльбрус это перемаркированый чип из Тайваня», не особо вникая в то, как это работает под капотом и почему Эльбрус — это действительно круто. Но кое в чём эти люди правы, ведь концептуально, Эльбрус действительно не первый в своём роде, есть у него и «папа», который работал по схожему принципу динамической ретрансляции из x86 и вышел на 5 лет ранее. Недавно я купил ноутбук iRu на TransMeta Crusoe 5800 всего за 1.000 рублей, который под капотом использует VLIW архитектуру с динамической ретрансляцией кода из x86 в свой машинный код. Интересно узнать, насколько далеко Эльбрус ушёл от своего приёмного «отца» за 20 лет существования? Тогда добро пожаловать под кат!

image

Предыстория и покупка

В 2000 году, выбор процессоров для десктопа был не таким широким, как в наше время. Самым популярным выбором были Pentium III и Celeron на PGA370, кто-то ещё продолжал сидеть на разогнанном P II с кнопочкой «Turbo», ну а кое-где можно было найти Pentium MMX/AMD K-6, или даже 486DX! Рынок x86 процессоров был представлен 4-мя игроками: Intel, AMD, VIA (которая годом ранее купила Cyrix и получила лицензию на x86) и новичок на рынке десктопных процессоров: компания TransMeta Corporation.

image

Идею TM в наше время прозвали бы стартапом: её концепция заключалась в том, что компания разрабатывает собственное VLIW-ядро с своей архитектурой и системой команд, а вокруг неё делает ретранслятор кода из любой архитектуры в её нативный. То есть, формально «x86» являлся всего-лишь «прошивкой» для их процессоров и теоретически, была возможность заставить его выполнять MIPS/ARM код. При этом, их процессор должен был быть совместим и с остальными x86 машинами и их парком софта, а так же поддерживать стандартные чипсеты.
Когда TM представила Crusoe публике, он был способен одновременно выполнять как x86 код, так и код pico-Java. Однако, в отличии от Эльбруса, TM не давала доступа к нативной архитектуре своих процессоров и не считала это необходимым, поскольку компания хотела представить законченный продукт, который мог бы конкурировать с десктопами тех лет. Такой же курс взяли ребята из МЦСТ, представив e2k в 2005 году и не зря. На сайте IXBT даже приводится такая цитата:

(Последнее, пожалуй, особенно справедливо, если учесть, что глава Transmeta, Dave Dietzel, в свое время немало времени провел в Москве, контактируя с будущими создателями E2K).

Но когда на рынке целых три гиганта, которые занимают все ниши рынка (Intel/AMD занимали средневысокую нишу, VIA — недорогую), выйти с новым продуктом отнюдь не просто. Однако TM было что предложить потребителю: в то время ноутбуки были очень тяжёлыми, горячими, конструктивно достаточно схожими с ПК и едва держали аккумулятор с малой автономностью. Среднее время автономной работы ноутбука тех лет составляла около полутора часов и это при «живом» свежем аккумуляторе! Процессоры TransMeta были не только более энергоэффективными и не требовали серьёзного охлаждения, они ещё и отлично экономили заряд аккумулятора благодаря фирменной технологии LongRun (которую затем лицензирует Intel и встроит в SpeedStep). Концепция LongRun была основана на активном динамическом регулировании напряжения ядра и частоты процессора, в зависимости от его загрузки. Кроме того, процессоры TransMeta, несмотря на свою комплексность и сложность разработки, на выходе стоили заметно дешевле, чем «большие» аналоги от Intel (Pentium IV Mobile) и AMD.

image

Pentium IV Mobile.Ни у кого такой не лежит? Интересно было бы погонять. На алике не нашел

На рынке ноутбучных процессоров, ситуация была такой: у Intel был Pentium IV Mobile (который являлся фактически десктопным процессором на ядре Willamette/Northwood с пониженными частотами), а позже и Centrino Pentium M (который берёт свою основу от Pentium III), который зачастую был недостаточно производительным. У AMD же были достаточно мощные чипы Athlon, которые были настоящими «печками» и бюджетные Duron, однако AMD на мобильном рынке был гораздо менее распространен до 2005 года. На тот момент, кроме всем известных ASUS, MSI и прочих брендов, были популярны и локальные бренды а-ля RoverBook и iRu. Такие бренды заказывали ноутбуки на готовых платформах и шасси у китайских и тайваньских производителей: Compal Electronics, FIC, Elitegroup, которые предлагали ODM решения под «локальную» сборку. Так поступила и компания iRu, которая заказывала комплекты «шасси + плата» и собирала их на каких-то небольших производствах в России, таким образом снижая налог и финальную цену на устройство, а появление таких недорогих чипов сказывалось только положительно. Конечно же, в основном локальные бренды занимали нишу бюджетных устройств, поскольку ниша дорогих и топовых ноутбуков уже была за HP/IBM/Dell/ASUS/Acer.

Недавно из интереса я искал цены на ноутбуки тех лет, когда рубль ещё не укрепился и цены писали в у.е. Тогда, ноутбук за 600-700$ уже считался бюджетным, возможности пойти и купить Digma/Chuwi за 10 тысяч как сейчас не было. При этом, наличие хоть какой-то дискретной графики (даже GeForce2 MX) поднимала цену ноутбука в небеса: Модели Dell и HP могли стоить до 2.000$, что для многих людей было просто неподъёмным.

image

Toshiba Satellite 2455-s305

image

Toshiba Portege 4000

Для сегодняшнего материала я купил ноутбук iRu Stilo 1514 российского производства, который был выпущен на рынок в 2003 году, в качестве «бюджетного» варианта по цене ~700$. Купил я его за 1.000 рублей с неисправным HDD. Мне пришлось немного побегать, чтобы найти живой и рабочий винчестер для данного ноутбука: ведь это 2.5 IDE HDD, которые встречаются куда реже 3.5 IDE. Запасов 3.5 IDE HDD у меня просто куча: хоть целый CDN для хабра поднять могу :)

image

У меня есть самое разное ПК железо, в том числе достаточно редкое: материнка на Socket 423 (для первых Pentium 4 на архитектуре Northwood) с RDRAM памятью, видеокарта SiS из 1998 года (именно видеокарта, а не встройка), но совершенно нет «ноутбучных» винчестеров. Ни IDE, ни SATA, поэтому с этим возникли проблемы. Я создал объявление в городском паблике-барахолке и начал писать всем сервисникам и людям, кто продаёт старое железо. Я рассчитывал на цену в ~250-300 рублей (как и в других городах). Низкая цена обусловлена неактуальностью: 2.5 IDE не совместим с 3.5, а в отличии от SATA и применить их можно только в старых ноутбуках. Да и чего там говорить: даже 3.5 IDE винчестеры сейчас продают всего за пару сотен рублей, позволяя выстроить из них RAID массив. Ха, RAID из полудохлых винчестеров 20 летней давности!

Изначально, я конечно же попытался разобрать родной HDD и почистить контакты между контроллером и самим двигателем жёсткого диска. Зачастую, на старых винчестерах контакты просто окисляются, а контроллер, не имея связи с головкой диска, просто перестаёт определяться системой. Я оживил далеко не один жёсткий диск таким способом, но именно с этим экземпляром такое не прокатило:

image
image

Обслуживание

Ушлые продавцы (хотелось бы назвать их более грубо, но мы на проф. ресурсе!) отвечали «за триста рублей пусть полежат», «за триста рублей я лучше прибью их к стене как сувенир», когда один СЦ всё же ответил и сам предложил честную цену — 250 рублей. Я съездил и забрал винт, причём он оказался идентичным моему. Кроме замены HDD, я решил полностью разобрать ноутбук и провести при необходимости обслуживание, а заодно и показать вам, какими были ноутбуки «под капотом» в те годы:

image

Сам HDD хранится вот в таком «кейсе», а для подключения к материнской плате использует переходной разъём, который не даёт контактам HDD обломаться при тряске.

image

Ноутбук разбирается довольно просто: откручиваем сзади все винтики, поддеваем заднюю часть крышки для петель и снимаем пластик, который скрывает кнопку включения и индикаторы:

image

Из-за прикипевших и слизанных винтиков, кое-где мне пришлось поработать с дрелью.

image

До системы охлаждения можно добраться не разбирая ноутбук, но для обслуживания или замены кулера придётся снимать даже материнскую плату. В моём случае было немного пыли, но запущенным его назвать было нельзя. Система охлаждения состоит из кулера, медной трубки и пластины, которая прилегает к процессору с помощью фольги, под которой была намазана термопаста. Ни о каких термопрокладках и речи не идёт. Охлаждается только процессор, южный мост ALI 1535+ не охлаждается вообще. На несколько чипов (скорее всего, там GPU и часть северного моста TransMeta) термоклеем наклеено два радиатора, причём криво. Решение странное, но и чипсеты тогда грелись не так сильно (кроме nForce, которые поголовно отваливались).

image
image

Процессор несъёмный, поменять его не выйдет. На тот момент, в большинстве ноутбуков процессоры не распаивались, а сидели в сокетах, причём в основном на десктопных! Встретить ноутбук на полноценном 478 «пне» было не просто, а очень просто. Обратите внимание, сам кристалл сколот, причём достаточно серьёзно! Благо, на работе процессора это не сказалось, но всё же с такими вещами нужно быть осторожнее. Довольно часто можно увидеть, как люди во время обслуживания видеокарт/ноутбуков скалывают чипы. Если скол несильный, то чип скорее всего не пострадает, но частенько люди умудряются убить так рабочие вещи.

image

Я буквально на днях разбирал свой старенький Packard Bell (который Acer), при разборке оба крепления петель сломались моментально. У 1514 же петли как с завода, поскольку петли, как и само крепление для них полностью из металла! Вот это качество сборки, причём на старых ноутбуках это повсеместно: производители действительно делали очень мощные крепления. После сборки ноутбука и установки нового винчестера, система ожила. Установленная XP моментально падала в BSOD, поскольку понятия не имела, что это за TransMeta такая, поэтому винду пришлось переставить, благо даже наклейка с ключом сохранилась. Понятное дело, что с USB-флэшки систему сюда не установить, но поскольку я обожаю копаться в ретрожелезе, у меня дома всё ещё есть несколько пишущих дисководов, как под IDE, так и под SATA. Винду я записывал на CD-R болванку, которые почему-то очень сильно подорожали (90 рублей, лет 10 назад они стояли 15-20 рублей). После записи образа, на диске обнаружились глубокие царапины, хотя я писал на относительно низкой скорости, да и после перезаписи 10 летней болванки никаких новых царапин там не появилось. Новодельные болванки стали настолько плохими?

В процессе переустановки системы, винда выплюнула мою болванку из-за царапин, поэтому пришлось ставить её аж с двух разных, второй была старая 10 летняя болванка, купленная за 20 рублей и на которую я записал систему еще будучи школьником. Кто всё ещё активно пользуется болванками, напишите в комментариях, качество действительно настолько упало, или мой привод шалит? Винда ставилась около часа.

image

Систему накатили, ноутбук перебрали, а значит его обслуживание на данный момент завершено. Хотелось бы отметить разнообразие различных интерфейсов, как для бюджетного экземпляра: тут и VGA, и RJ-45, и телефонная линия, и целых 4 USB 2.0, и LPT, и PS/2. ИК-порта и PCMCIA не хватает только! Жаль COM-порта нет, он мне очень нужен сейчас, поскольку я работаю со старыми мобилками и нужен именно ноут, поскольку места мало.

image

Синтетические тесты

Измерять производительность ноутбука мы будем по трем фронтам: бенчмарки, игры тех лет и эмуляторы, а делать мы будем это под WinXP, поскольку современный Linux на «трансмете» нормально работать скорее всего не будет. Кроме того, я покажу пару вариантов применения такого ноутбука в современном мире.

Давайте начнём с синтетических тестов и посмотрим на цифры: CPU-Z хорошо знает о нашем процессоре и может рассказать о нём достаточно многое. У нашего процессора целых 512кб L2 кэша, что на 2000 год достаточно много: например топовый Pentium 4 на ядре Northwood, имел всего-лишь 256кб кэша. Увеличение кэша нужно была не только для данных, но и вероятно для кэширования самых часто используемых блоков x86 кода. Кроме того, процессор поддерживал SIMD инструкции в виде MMX, которые процессор «нативно» не поддерживал: они были реализованы как часть транслятора кода. То есть, теоретически «обновлением» прошивки процессора можно было добавить поддержку и SSE, и 3D Now!, и VT-x!

image

Вот здесь и раскрывается наш iRu, который на самом деле Elitegroup!

image

Причём некоторых хардварных блоков, типичных для ЦПУ общего назначения, у TM5800 не было. Например, MMU не было вообще, он реализовывался на уровне транслятора, поскольку у x86 весьма своеобразная адресация памяти. А поскольку процессор теоретически мог исполнять другие трансляторы, решили сделать всё универсально. В целом, характеристики были очень достойными на те годы (в пересчёте нативной производительности), особенно касательно «гонки тактовой частоты», но при этом процессор оставался достаточно холодным.

Классический тест-бенчмарк CPU Queen показывает результаты на уровне двухпроцессорной сборки с P II, или ранних и бюджетных P III. Результаты ближе всего к AMD Duron, который являлся бюджетным low-end процессором из 2000 года.
Даже на 2002-2003 год, P III всё ещё оставался более чем актуальным процессором, поэтому такой результат был приемлемым.

image
image

За графику отвечает видеочип с поддержкой 3D ускорения, который был разработан Silicon Integrated Systems (SiS). Сам GPU был распаян отдельно, несмотря на то, что многим читателям, SiS запомнились в первую очередь как чипсетные встройки, но у них были и полноценные видеокарты в те годы, которые позиционировались как бюджетные решения для игр.

image

image

У Elitegroup какая-то особенная любовь к чипсетам от SiS, поэтому все их материнские платы, что я использовал, были со встроенной графикой SiS. SiS 315 полностью поддерживает только Direct3D 6 и OGL 1.2, чего для старых игр было вполне достаточно. Производительность близка к Riva TNT/Rage 128, но при этом без проблем перевариает 32х битный цвет (чем не могли похвастаться решения от 3dfx и ранние NV), и в целом достаточно шустрый.

image

В целом, по сухим цифрам ноутбук весьма производительный на своё время: тогда встречались варианты и слабее, в широком обиходе были печатные машинки из середины-конца девяностых на P II-P III. Стоили Б/У устройства уже не «штуку баксов», но я не думаю, что сильно дешевле такого iRu. По сообщению пользователя на linux.org.ru, в 2005 году он купил ноутбук на P III за 10.000 рублей (когда iRU стоил ~17.000 двумя годами ранее).

Игры

Играть мы будем в классику поздних 90х годов. Однако учтите, что игры с DOS тут нормально не работают: похоже эмуляция 8086 здесь чисто номинальная, исключительно для того, чтобы стартовать систему. Однако я запускал досовские игрушки под WinNT из под NTVDM, возможно под Win9x ситуация будет лучше.

Начинаем с Quake 1, который здесь нормально не работает к сожалению. Консоль не сворачивается, хотя звуки игры и меню на фоне слышно.

Но с Quake 2 ситуация гораздо лучше. SiS 315 вывозит Quake 2 в 60 FPS, в разрешении 640x480. Причём, здесь работает магия старых игр: при таком низком разрешении игра не выглядит отвратно, а вполне себе… аутентично. Частота кадров бывает нестабильной из-за трансляции, но люди играли в куда худших условиях. Эльбрусы, к примеру, уже научились тянуть куда более тяжёлую GTA Vice City в режиме эмуляции, а в нативном режиме запускают и Doom 3 на ультра-настройках.
Что меня особенно удивило: процессор вполне себе «вывозит» софт-рендер 320x240 в те же 60 кадров в секунду.

image
Извиняюсь за фото. Quake в софтрендере не умеет нормально захватываться скриншотером из-за 8-битного цвета

NFS Porsche Unleashed: изначально я хотел протестировать NFS Hot Pursuit (который первый), но он валился на ошибке Glide. Даже после установки nGlide, ситуация не поменялась и я решил попробовать поставить игру потяжелее — Porsche Unleashed. Вот она, на удивление, идёт уверенные 50-60 кадров без каких-либо фризов, т.е упора нет ни в динамическую трансляцию, ни во встройку.

image

А вот кто удивил, так это Half-Life. Я специально качал старой версию с WON (ещё до Steam), поскольку современные версии, скомпилированные современными компиляторами работают заметно медленнее на старых машинах. Training Course идёт с переменным успехом, причём как на OGL/D3D, так и на софтваре. Сама игра крашится при загрузке уровня, т.к не хватает ОЗУ :(

Эмуляторы работают неплохо. И денди и сега идут без каких либо проблем. PS1 я не пробовал, но с ним скорее всего будут проблемы, а вот классика идёт отлично. Плюс учитывая неплохой дисплей, подключить пару геймпадов и порубать в соника или марио хватит более чем. Играть приятно.

image
Из 2D игр, я запустил только достаточно тяжелый для P III Stronghold Crusader. Причем обе версии: HD и оригинальную. HD версия не отличается ассетами но работает хуже: современные компиляторы генерирует неоптимальный код для старых процессоров. CD-версия идёт немного лучше(20-25 кадров, оригинал зафиксирован на 30).

image

SiS хардварно держит DirectDraw, поэтому с подобными играми проблем вообще не должно быть: и дюна, и Fallout, и Starcraft, и Age Of Empires должны идти здесь с отличным фреймрейтом. Поиграть в старые 2D игрушки можно с огромным удовольствием.
Отдельно хочу похвалить экран устройства. Под моей прошлой статьёй о EEEPC, несколько человек отписались о том, что качество дисплеев старых бюджетников в разы лучше отвратных матриц современных ноутбуков по 15-20 тысяч. Этот ноутбук только подтверждает это.

Домашний сервер

Ноутбук из предыдущей статьи, с большой вероятностью уедет в гараж моего отца. В летнее время я люблю приводить туда подружек, а такая машинка для ретро-гейминга вполне подойдёт для того, чтобы «порубаться» в сегу или денди!

А вот для этой машинки, я решил найти иное применение: у него достаточно низкое потребление (заметно ниже обычного десктопа схожих характеристик), а аккумулятор всё ещё немного держит заряд. Так почему бы не подключить ноутбук в локальную сеть, и не сделать из него сервер? Я собрал несколько потенциальных применений такого ноутбука в качестве сервера:

1. NAS-сервер для файлов. Вероятно, читатели могут задаться вопросом касательно надёжности подобного хранилища, однако никто не мешает мониторить S.M.A.R.T и делать бэкапы в фоне на переносной HDD, или флэшку. Благо, USB-портов здесь разведено достаточно.

В WinXP настроить общий доступ ещё проще, чем в Win Vista: для этого достаточно лишь «расшарить» общий-доступ к папке, можно даже сделать доступ без пароля. Со стороны основного ПК, достаточно лишь добавить сетевой диск по имени ПК в сети и всё заработает само. Для матёрых сисадминов такое разжёвывание покажется довольно простым, однако вы даже не подозреваете, как многие ребята недооценивают возможности «локалки»!

2. Git-сервер. Ещё до начала работы над статьёй, я решил что хочу сделать из этой машинки Git-сервер и хостить на нём различные проекты. Для жителей РФ, перспективы Github и Bitbucket весьма туманны, да и всегда приятно иметь копию кода у себя под рукой. И при этом, нет необходимости даже поднимать какой-то сервер: достаточно лишь подключить SMB диск к локальной машине! Суть в том, что помимо классических протоколов: ssh, git, http, у git есть ещё и поддержка локальных remote-серверов. А т.к SMB и под Win, и под Linux монтируется как полноценный диск, то хватит:

git remote add file://y/repos/myrepo

Где y — удалённый диск.

3. FTP-сервер. Тут всё очевидно и вариантов куча, как например FileZilla. Если захотите пробросить FTP в интернет, то будьте осторожней: всё же, прошло почти 10 лет с момента окончания её поддержки и она может быть небезопасной, но для локальной сети нормально.

4. HTTP-сервер, самый очевидный вариант. Захостить таблицу рекордов для игры, или домашнюю страничку? Так почему бы и нет, если относительно актуальные версии серверов есть и под WinXP?

5. Ну и конечно же, сервера для классических игрушек типа Quake. Вот сидите вы с друзьями, пиво пьёте, отдыхаете, а тут вспомнили что у вас лежит несколько подобных ноутов в подвале. Хоба, сдули пыль с старичков и через 5 минут уже устроили локальную баталию! Я для таких целей несколько машинок держу у себя дома :)

Теперь рассмотрим плюсы и минусы такого применения:

+ Крайне дешёвые HDD. Если Б/У SATA 2.5 жёсткий диск может стоить 500-1.000 рублей, то в больших городах 2.5 IDE чуть ли не свалках валются за три копейки. Мне лично женщина с другого города писала и предлагал отдать 4 Hitachi за 500 рублей. При этом шанс наткнуться на «мертвый» HDD заметно ниже, чем на убитых SATA, т.к 2.5 IDE как стандарт очень быстро ушёл. На крайний случай, можно прихватить с собой ноутбук для проверки, благо в отличии от современных девайсов, для доступа к отсеку HDD здесь требуется открутить всего 3 винтика!
+ Достаточно низкое потребление, одно из главных достоинств процессоров TransMeta. Кроме того, у них низкое тепловыделение и они нетребовательны к охлаждению. Если отключить дисплей, то устройство не ударит по карману счетами за электроэнергию. Конечно, на современных ультрабуках потребление ниже, но там и ценник другой.
+ Дешёвая цена. Ноутбук с дефектом (например, нерабочей клавиатурой), если вы захотите купить подобный для организации сервера, будет стоить до 500 рублей. Рабочий вариант обойдется ~1.000 рублей. Весьма и весьма бюджетно, особенно для нашего времени! Более того, у многих такие ноутбуки лежат в подвалах, бесплатно, будучи забытыми.
+ Wi-Fi модуль. Не нужно даже тянуть кабелей, спрятали ноутбук где-нибудь на полочке рядом с одеждой и он себе «молотит» как сервер! Как я понял, почти все ноутбуки с 2003-2004 года комплектуются Wi-Fi модулем 54мб/с.
+ Хорошая совместимость с старым софтом и играми. Хотите вы продиагностировать свою древнюю бэху или поиграть в старкрафт, отдыхая на рыбалке, вы сможете сделать это без проблем.

- Малый объём HDD. Для репозитория своих локальных проектов, 60-80гб может быть достаточно, или для фотоархива прошлых лет. Можно расширить за счёт внешних кейсов и флэшек. Плюс, покупка Б/У HDD это кот в мешке. Как альтернатива: покупка переходника SATA -> 2.5 IDE и использование SSD/HDD больших объёмов.
- Производительность. Делать из такого ноутбука хайлоад-сервис дело сомнительное, но для кого-то его производительность может оказаться действительно недостаточной.
- Отсутствие USB 3.0. Конечно странный аргумент для ретро-техники, но для кого-то может быть критичным.
- Для 3D ретро гейминга устройство может не подойти. Особенно если играть в игры с софтрендером на высоком разрешении, процессор слишком слаб.

Очень забавно вышло, когда статья была практически готова к сдаче на проверку, у меня крякнул мой дешманский БП BoxIT. Бывает и такое, а поскольку у меня есть график публикаций, то статью нужно было закончить. И тут, доказав полезность обладания подобным ништяком «про запас», на помощь мне пришел один из моих ноутбуков, который работал на VIA C7 и спас ситуацию!

Заключение

Такому ноутбуку даже сейчас можно найти применение и сделать его полезным. Однако, к сожалению, большинство людей банально об этом даже не задумывались, необоснованно считая подобные ништяки «E-Waste». Кто знает, вдруг благодаря этой статье, именно ваш ноутбук из подвала будет снова работать спустя долгие годы и принесёт пользу своему владельцу? :)

На самом деле, пункт «заключение» в моих статьях отнюдь не «филлер», мне регулярно пишут люди в ЛС с вопросами «а где можно применить подобный ништяк», или предлагают заслать его мне. Я регулярно вижу в комментариях, как мои читатели показывают, как применяют старые гаджеты в современном мире и мне действительно приятно это видеть. А вы как считаете?

Автор: Богдан

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js