Intel「Atom」シリーズを終了するとアナウンスして半年、Apollo Lakeをリリース。
Intelが「Atom」シリーズを終了すると打ち出してから半年。
筆者は、このニュースを聞いた時、Atom搭載の格安のタブレットやノートPC、格安デスクトップは消滅するのかと、思っていたけど、半年経ってみるとApollo Lakeをリリースするなど、Atomシリーズが完全に廃止になる状況ではない模様。
Intelは、2016年4月19日(米国時間)に発表した大規模な人員削減計画を進めていく中で、これまで苦戦が続いていた「Atom」シリーズを終了することにより、スマートフォン/タブレットなどモバイル機器向けのSoC市場から撤退していく考えであることを明らかにした。廃止予定のAtomチップとして、「SoFIA」「Broxton」「Cherry Trail」(いずれも開発コード名)などを挙げている。
Atomシリーズを終了:Intel、モバイル向けSoC事業を廃止 (1/3) - EE Times Japan
2016/09/07の時点で、“Apollo Lake”のリリースニュースが流れている。リリースされたPentium® Processor N4200は、CPUコアも強化しており、格安のノートPCに搭載されると考えられるため、当面格安のノートPC、格安デスクトップは残っていきそうと一安心。しかも、“Goldmont”は命令のデコード能力を従来の2→3命令に強化*1しており、相当大きな改良が入っていると思われる。
“Apollo Lake”はエントリーレベルのタブレットやコンピュータ用として開発された第2世代の14nm SoCである。従来、これらの市場にはAtomブランドの製品が展開されていたが、“Apollo Lake”ではPentiumおよびCeleronのブランドが使用される。
“Apollo Lake”に使用されるCPUは“Goldmont”と呼ばれ、“Braswell”世代から30%の性能向上を実現している。
北森瓦版 - “Apollo Lake”がひっそりとローンチされる
また、車載専用SoCとしてAtomを位置づける発表を行っており、特に、車載は市場が成長方向にあるため、デザインウインを確保できれば、長期の供給が求められる関係上、Atomシリーズが長く続くとも考えられる。まあ、IoTデバイスと言ってるのはご愛嬌ぐらいに思えばよいかと。
そのおまけとして、タブレットやノートPCにチップを供給してもらえると個人的には嬉しいなあ。
Intel Corporation(本社:アメリカ カリフォルニア州)は2016年10月25日(現地時間)、Apollo Lake世代のIoTデバイス向けSoC「Atom E3900」シリーズを発表した。なお、同時に車載専用SoCとして「Atom A3900」シリーズも発表。こちらはADAS(先進運転支援システム)やデジタルコクピット向けで、2017年第1四半期に出荷が開始される見込みだ。
Intel、GPU性能が約3倍に向上した“Apollo Lake”世代のIoT向けSoC「Atom E3900」シリーズ発表 - エルミタージュ秋葉原
(16:40追記)
ちょっと調べていたら、既にApollo Lake搭載のファンレスMini-ITXが発売されていた。
製品ラインナップは、最上位プロセッサPentium J4205(4コア / 定格1.50GHz / バースト時2.60GHz / キャッシュ2MB / TDP10W)を搭載する「J4205-ITX」と、Celeron J3455(4コア / 定格1.50GHz / バースト時2.30GHz / キャッシュ2MB / TDP10W)を搭載する「J3455-ITX」の2種。
Apollo Lake搭載のファンレスMini-ITX、ASRock「J4205-ITX」など2種21日発売 - エルミタージュ秋葉原
C++ templateでstd::vector もどきを実装してみる。
#include <iostream> template <class T> class List { public: List(); List(int size); ~List(); T& operator[](int index); private: T* data; }; template <class T> List<T>::List(int size) { data = new T[size]; return; } template <class T> List<T>::~List() { delete[] data; return; } template <class T> T& List<T>::operator[](int index) { return data[index]; } int main() { List<int> list(4); list[0] = -1; std::cout << "Hello World!" << list[0] << std::endl; return 0; }
ListVector構造に添字(インデックス)でアクセスするのが目的。
動かしてみる。
$ g++ -std=c++11 list.cpp $ ./a.out Hello World!-1
動いた!
参考:
9.8 — Overloading the subscript operator | Learn C++
2016/11/13 追記
コメントで指摘いただきましたが、紹介したコードがデータ構造上List(std::list)よりVector(std::vector)に近い構造のため、ListをVectorに修正させていただきます。
PowershellでWORDを目次付きでPDFに自動変換する
単純な変換なら日本語の情報も多いが、目次付けるオプションに対応しているものは限られる。
Office Script to convert Word document to PDF file (PowerShell)
Windows7環境でVisual Stdio無しでIISとASP.NETを動かす。
Windows vista以降では.net frameworkがデフォルトでインストールされている。
実は、C#とVisual Basic(.NET Framework用のもの。「VB.NET」と呼ばれることもある。以降「VB」)のコンパイラーはWindowsに標準で含まれているのだ。
OSに標準付属のC#/VBコンパイラーでソースコードをコンパイルするには?:.NET TIPS - @IT
これを使ってVisual Stdio無しにローカルな環境で手軽にASP.NET(C#)を動かしたてみたく調べてみた。
結論を先に言うと動かせた。
手順
- IISをセットアップする(参考:Windows 7 で IIS をインストールしたい)
- IISマネージャーでASP.NETを有効にし、ASP.NETのスクリプトをデプロイする(参考:IIS: ◆アプリケーションの実行環境を設定する)
mipsel-elf-gdbのsimulatorでmipsのバイナリーを実行する
エミュレータとして知名度のあるqemu以外にも、gdbにはsimulatorが内蔵されており、簡単なバイナリーを実行できることを知ったので試してみる。
この方式の利点はbinutilsをクロスコンパイルするだけで、assemblerとsimulatorが手に入るという手軽さ。今後考えている独自CPU自作に役立ちそう。
ターゲットはRISCとして知名度のあるmipsアーキテクチャ。以下のページの手順とコードを大変参考にさせて頂いた。
[user@localhost mips]$ mips-elf-gdb -q a.out
kozosのcross-gcc4でmipsアセンブリをコンパイルし、gdbのsimで実行する - ヾノ*>ㅅ<)ノシ帳
Reading symbols from /home/user/project/mips/a.out...(no debugging symbols found)...done.
(gdb) target sim
Connected to the simulator.
(gdb) r
Starting program: /home/user/project/mips/a.out
warning: No program loaded.
[Inferior 1 (process 42000) exited with code 057]
(gdb) load
流れはこんな感じ。上記のページとの違いはクロスコンパイル用のbinutilsのみで実行ファイルの生成とgdbによる実行を可能にしている点。
$ mipsel-elf-as hello.S -o hello.o -EB $ mipsel-elf-ld hello.o -T mips.lds -o hello.out
無事にバイナリが出来たらgdbのtarget simでシミュレータにバイナリーを送り込んで実行させるだけ。最初"-EB"をつけていなかったのでendianの問題に嵌った。
$ mipsel-elf-gdb hello.out GNU gdb (GDB) 7.8.50.20141223-cvs Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=mipsel-elf". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from hello.out...(no debugging symbols found)...done. (gdb) target sim Connected to the simulator. (gdb) load Loading section .text, size 0x78 vma 0xffffffff80000000 Loading section .MIPS.abiflags, size 0x18 vma 0xffffffff80000078 Loading section .data, size 0xd vma 0xffffffff80000090 Start address 0xffffffff80000000 Transfer rate: 1256 bits in <1 sec. (gdb) r Starting program: /tmp/hello.out Hello World sim_monitor(17): _exit(int reason) to be coded [Inferior 1 (process 42000) exited normally] (gdb) q
こんな感じ。ちゃんとHello Worldと出力されている。
TD4の拡張検討とTD8化
今年もあとわずかだけど、どんな案があるのか調べてみた。
- 8bit化(レジスターとバス、アドレスを拡張する):http://hexprobe.nbug.net/hard:cpu:td4
- 命令追加
- RAMを実装
- ROMをブロックRAMで実装する(FPGA限定)
単純な8bit化は簡単そうなので試してみた。