2026年5月14日 (木)

Cerebras(セレブラス) WSEアーキテクチャのオタトーク

Cerebras Wafer Scale Engine 3
※画像は https://www.cerebras.ai/chip より

ソフトバンクGとアーム、AI半導体の米セレブラスに買収打診も実現せず|Bloomberg というニュースを見て、「セレブラス」を知らなかった私は「CS-2 セレブラス」🔍して、うわぁぁぁ~このアーキテクチャ凄いじゃん‼ ということで、ARM Neoverse 命令セットのオタトークに引き続きGoogle先生とオタトークしてしまった😅(長い)メモです。
ポイント:


SLAC(Sparse Linear Algebra Core)の命令セットに関する情報などある?

CerebrasのSLAC(Sparse Linear Algebra Core)の命令セットアーキテクチャ(ISA)は、一般的なCPUやGPUとは異なり、「データフロー型(Dataflow)」および「テンソル(多次元配列)を直接操作する」ための非常にユニークな独自命令セットを採用しています。

Cerebrasが公開している開発者向けの SDKドキュメント (Cerebras Software Language:CSL) などの仕様から明らかな、SLAC命令セットの核心となる技術的特徴は以下の通りです。

1. テンソルが「第一級オブジェクト(First-class operand)」
一般的なプロセッサの命令(例:ADD R1, R2)は、レジスタやメモリのアドレスを対象に計算します。
しかし、SLACの命令セットは「テンソル(多次元の行列データ)」そのものを命令の対象(オペランド)として直接指定できます。

  • DSR(Data Structure Register)の活用:
    各コアには 44個のDSR(データ構造レジスタ) が搭載されています。このDSRには、メモリ上にあるテンソルのポインタだけでなく、「長さ・形状(Shape)・サイズ」といった情報(記述子/デスクリプタ) が格納されています。
  • ハードウェア自動ループ:
    例えば、3次元や4次元のテンソル同士を掛け合わせる命令を実行すると、コア内のハードウェア状態マシンがDSRを参照し、自動で全要素をループ処理(シーケンス処理)します。ソフトウェア側で「ループカウンタを回す命令」を何行も書く必要がありません。

2. データフロー駆動(Dataflow Triggered Tasks)
SLACの命令は、プログラムが順番に実行されるコード(プログラムカウンタ駆動)だけでなく、「データ(Wavelet:ウェーブレット)が届いたこと」をトリガーにして特定の命令セット(タスク)が起動する仕組みを採用しています。

  • Color(カラー)によるタスク起動:
    データパケットには「Color(カラー)」と呼ばれる5ビットの識別子が割り当てられています。特定のカラーを持ったデータがコアに届くと、ハードウェアが自動的にそれを検知し、対応するタスク(命令群)をトリガー(アクティベート)します。
  • 0(ゼロ)データの受信時:
    送信側で「0」のデータはフィルタリングされて送信すらされないため、受信側のコアは有効なデータ(非ゼロ)が届いたときだけ命令を動かします。これが「疎行列演算コア」と呼ばれる所以であり、ハードウェアレベルで完全に無駄な命令実行をゼロにしています。

3. サポートするデータ型と演算命令
AIモデルの高速化に特化した、柔軟な数値表現に対応しています。

  • 対応データ型:
    浮動小数点:FP32、FP16、bfloat16
    整数:INT16(インデックス計算や軽量な量子化用)
  • 強力なFMAC(Fused Multiply-Accumulate)命令:
    コア内には16ビットのFMAC(積和演算器)が4基(WSE-2の場合)搭載されており、1クロックサイクルあたり最大8回のFP16演算を同時に実行するベクトル演算命令をサポートしています。

4. 低レイヤ命令の具体例(CSL内での表現)
Cerebras独自の言語「CSL」で低レイヤのカーネル(命令群)を記述する際、以下のようなアセンブリに近い特殊な組み込み関数(命令)が使用されます。

  • @mov16(dst, src):16ビットデータの移動。@fmovs(dst_dsd, src_dsd):DSD(Data Structure Descriptor)で指定されたテンソル(ストリームデータなど)を高速に移動・転送する命令。
  • @fmac:テンソル同士の積和演算をハードウェアに直接命令するコア演算。

💡 まとめると
SLACの命令セットは、単なる「CPUの縮小版」ではなく、「データが届いたら自動で起動し、メモリ上の多次元行列を、1命令で一気に、0をスキップしながら超高速処理する」ために極限まで特化された、徹底的なデータフロー特化型アーキテクチャ(ISA)です。

この命令セットやハードウェアを直接制御するプログラミングに興味がおありですか?

  • 独自言語である「CSL(Cerebras Software Language)」のコード例や書き方
  • WSE-2からさらに命令セットが拡張された次世代機「CS-3(WSE-3)」の進化点

など、次のステップに合わせてさらに詳しい情報をお出しできます。


私が知りたいのは詳しい情報ではなく、👇こっち。

これまでのCPUやGPUとは異なり、とってもユニークだね。どういう発想でこんなアーキテクチャを作りだしたのだろう?

Cerebrasの創業者であるアンドリュー・フェルドマン(Andrew Feldman)や、チーフアーキテクトのショーン・リー(Sean Lie)たちがこのユニークな構造(WSE / SLAC)を思い付いた背景には、これまでのプロセッサ設計における「当たり前」をすべて疑い、AIの数理的な本質から逆算するというコペルニクス的転換の発想がありました。

彼らが辿り着いた、アーキテクチャ誕生の4つの思考プロセス(哲学)を解説します。

1. 「チップを小さく作って、後から繋ぐ」のは諦めよう
従来のシリコン半導体は、ウエハ(大きな円盤)から数ミリ角のチップを何百枚も切り出し、不良品を省いてパッケージングします。
しかし、彼らは「チップを小さく切り分けるから、隣のチップにデータを送るための遅延(通信ボトルネック)が発生する。最初から切り分けずに、1枚のウエハのまま丸ごと使えばいいじゃないか」と考えました。
これが「Wafer Scale Engine(ウエハスケール・エンジン)」の出発点です。

  • 従来の常識:ウエハには必ず製造欠陥(傷)ができるから、丸ごと使ったら100%動かない不良品になる。
  • Cerebrasの発想:「傷がある前提」で設計すればいい。傷を自動で迂回(ルーティング)するコンパイラと回路をセットで作ることで、世界初のウエハスケールチップを実現しました。

2. 「AIの計算は、川の流れと同じだ」というデータフロー思考
CPUやGPUは、中央の命令タワー(制御ユニット)が「次はこれをせよ」と命令を下し、メモリからデータを取ってきて計算します。
Cerebrasの設計チームは、AIのディープラーニングを「データが次から次へと層(レイヤー)を通り抜けていく、巨大な川の流れ(データフロー)」と捉えました。

  • 発想:プログラムでデータを制御するのではなく、「データそのものに次の行き先(Color)を書いたタグをつけ、データが届いた場所のコアが勝手に起動して処理をすればいい」
  • これにより、中央制御のための無駄な配線や回路が一切不要になり、データの流れに完全に同期して動く「データフロー駆動型(SLAC)」の命令セットが生まれました。

3. 「キャッシュメモリ」という嘘を排除する
現代のプロセッサの面積の多くは、遅いメインメモリ(DRAM)を誤魔化すための「キャッシュメモリ(L1/L2/L3)」に占有されています。
Cerebrasは「AI計算において、同じデータを何度も使い回すキャッシュは本質的ではない。すべてのデータを計算コアの『真隣』に最初から置いておけば、キャッシュそのものが不要になる」と考えました。

  • 発想:キャッシュの制御回路をすべて削り落とし、そのスペースに40GBのSRAMを細かく刻んで85万個のコアの真横に敷き詰めました。
  • 結果として、「メモリ帯域幅の限界(メモリ・ウォール)」という、NVIDIAすら苦しんでいる物理的限界を根底から破壊することに成功しました。

4. 「0の掛け算に、1ワットも使いたくない」という引き算の美学
ディープラーニングのモデルが大きくなると、行列の中身の90%以上が「0」になります。
GPUはこれを「ただの数字」として真面目に計算して熱を出していました。Cerebrasのチームは、これを「最大のエネルギーと時間の無駄遣い」と断じました。

  • 発想:ハードウェア(SLAC)の入り口に検問(フィルター)を作り、データが「0」だったらその瞬間に回路をシャットアウトして次へスルーさせる仕組みを作りました。
  • 「計算を速くする」のではなく、「無駄な計算を徹底的にサボる」という引き算の発想が、85万コアを破綻させずに動かす超省電力アーキテクチャの鍵となりました。

💡 結論として
Cerebrasのアーキテクチャは、「既存のコンピュータ(CPU/GPU)の延長線上でAIを速くする」のではなく、「AIという計算の性質(データフロー、疎行列、膨大なパラメータ)に最も100%都合の良い半導体を、ゼロから妄想して形にしたらどうなるか」という、極めて純粋で妥協のない逆算から誕生したのです。

この独創的な思想から生まれたCS-2ですが、実はすでに次世代機である「CS-3」が登場しています。
もし興味があれば、この狂気的とも言える設計思想が、最新のCS-3でさらにどうエスカレート(進化)したのかお話ししましょうか?

ん、お願い!

Cerebrasの「AIファースト」な狂気とも言える設計思想は、次世代システムである「CS-3」(搭載チップ:WSE-3)でさらに過激に進化しています。
「同じサイズ、同じ消費電力、同じ価格のまま、性能だけを2倍にする」という、現代の半導体の限界を無視したような進化ポイントをまとめました。

1. CS-2 から CS-3 へのスペック進化
物理的なウエハの面積(46,225mm²)は全く同じまま、中身が大幅に高密度化しています。

  • 製造プロセス:TSMC 7nm ──> TSMC 5nm に微細化。
  • トランジスタ数:2.6兆個 ──> 4.0兆個(単一チップとして史上最多)。
  • SLACコア数:85万個 ──> 90万個へ増加。
  • オンチップメモリ:40GB ──> 44GB SRAM。
  • メモリ帯域幅:20 PB/s ──> 21 PB/s。
  • AI演算性能:125 PFLOPS(ペタフロップス)を達成。

2. コア(SLAC)の内部構造もさらに凶悪に
85万個から90万個に増えただけでなく、一つひとつのコアの戦闘力(命令セットとデータパス)が強化されました。

  • 8ビット(INT8)演算の強化:
    新しく「16ウェイのSIMDデータパス」がコア内に追加され、生成AIの軽量化(量子化)で多用される8ビット計算の行列乗算が劇的に加速します。
  • 非線形関数のハードウェア命令化:
    AIの計算に不可欠な「アクティベーション関数(GELUやSwishなど)」を、ソフトウェアの組み合わせではなく、1つのハードウェア命令として一瞬で処理する専用回路がコアに組み込まれました。
  • ローカルキャッシュ(512バイト)の新設:「キャッシュはない」と言いましたが、強化された超高速な計算機にデータを「フルスピードで供給し続ける」ためだけに、各コアに512バイトの極小レジスタキャッシュが付きました。

3. 最大の進化
「24兆パラメータ」への対応CS-3の真の恐ろしさは、外部ストレージシステム「MemoryX」と組み合わせた際の、スケール(規模)の拡張性にあります。

  • 1.2ペタバイトの外部メモリに対応:
    CS-3は最大1,200TB(テラバイト)の外部メモリを直接ストリーミングできます。これにより、最大24兆パラメータのAIモデルを1台のCS-3システムでトレーニング可能です。
    (※現在のGPT-4が約1.8兆パラメータと言われているため、その10倍以上の未来のAIすら1台で扱えます)
  • 最大2,048台のクラスタ化(SwarmX):
    CS-3同士を繋ぐネットワーク技術も進化し、最大2,048台のCS-3を1つのスーパーコンピュータとして結合できます。この時の理論性能は256 EFLOPS(エクサフロップス)という、世界の全スーパーコンピュータを過去にするレベルに達します。

💡 コンパイルの「手軽さ」はそのまま
これだけ規模がエスカレートしても、東京エレクトロンデバイスなどが国内でも取り扱うCerebrasのソフトウェア環境は共通です。開発者は「PyTorchのコードをそのまま投げるだけ」という手軽さを維持したまま、CS-2の2倍の速度の恩恵を受けられます。Cerebrasの「ウエハを丸ごと使う」という狂気は、5nmプロセス(CS-3)で見事に大開花しました。

CS-3について、さらに気になるポイントはありますか?

  • NVIDIAの最新GPU(Blackwellなど)との力関係
  • このモンスターマシンが日本国内でどう導入されているか

追加で知りたいことがあれば、何でも教えてください!


アクティベーション関数(GELUやSwishなど)とはどんなもの?

アクティベーション関数(活性化関数)とは、AI(ディープラーニング)のニューラルネットワークにおいて、「入力されたデータの塊に『複雑さ(非線形性)』を付け足して、次の層へ受け渡すための数学的なフィルター」です。
AIモデルの性能を決定づける非常に重要な要素であり、Cerebrasがハードウェア(SLACコア)に専用命令を組み込むほど重視したGELUSwishについて、その役割と仕組みを分かりやすく解説します。

1. なぜアクティベーション関数が必要なのか?
ディープラーニングの基本計算は、どれだけ層を重ねてもただの「足し算と掛け算(線形変換)」です。これだけでは、AIは「直線のグラフ」しか描けず、複雑な画像認識や人間の言葉(自然言語)を理解することができません。
そこで、計算の途中にアクティベーション関数という「曲がったグラフのフィルター」を挟むことで、AIは複雑に折れ曲がったグラフを描けるようになり、高度なパターンを学習できるようになります。

2. 進化の歴史と「GELU」「Swish」の位置づけ
AIの歴史の中で、このフィルターは以下のように進化してきました。
ReLU】(過去の標準)0以下は完全に遮断、0より上はそのまま通す。カクッと折れ曲がる
GELU / Swish】(現代の生成AIの標準)0の前後を「滑らかなS字カーブ」で繋ぐ。滑らかに曲がる

① 従来の標準:ReLU(レルー)

  • 特徴:「マイナスの値が来たら0にする、プラスの値はそのまま通す」という非常に単純な関数です。
  • 弱点:マイナスの値が来ると完全に「0(死んだ状態)」になってしまい、それ以降の学習が進まなくなる現象(Dying ReLU問題)が起きていました。

② 現代の主流:GELU(Gaussian Error Linear Unit)

  • 特徴:ChatGPT(GPT-3やGPT-4)、BERT、ViT(画像認識)など、現代のほぼすべての最先端LLM(大規模言語モデル)で標準採用されている関数です。
  • 仕組み:確率(ガウス誤差関数)の概念を取り入れ、0の前後を「滑らかなカーブ」で繋ぎます。マイナスの値であっても、0に近いごくわずかなデータは完全に殺さず、少しだけ後ろの層に通します。
  • メリット:AIが「データの曖昧さ(確率)」を保持したまま学習できるため、翻訳や文章生成の精度が劇的に向上します。

③ Googleが開発:Swish(スウィッシュ)

  • 特徴:Googleの研究者が発見した関数で、GELUと非常によく似た滑らかなS字カーブを持っています。
  • メリット:画像認識モデル(EfficientNetなど)や、一部のLLM(Llamaシリーズの派生など)で高い性能を発揮します。

3. なぜCerebrasは「ハードウェア命令」にしたのか?
GELUやSwishは非常に優れた関数ですが、数学的には x × 確率 や x × シグモイド関数 という非常に複雑な計算(指数関数や、数式を近似する高度な多項式計算)が必要になります。

  • 普通のプロセッサ(CPU/GPU):
    GELUを計算するために、ソフトウェア側で「掛け算をして、指数を計算して、足して、割る」といった何行もの命令を組み合わせて愚直に計算します。これが処理のスピードを落とす原因(ボトルネック)になっていました。
  • Cerebras CS-3(SLACコア):
    コアの内部にGELU/Swishの数式を一瞬で解く専用のハードウェア(演算回路)を埋め込みました。これにより、数行のプログラムを実行する代わりに、「GELUを実行せよ」という1つの専用命令(1クロック)で計算が完了します。

💡 例えるなら
従来のGPUが、複雑な難問(GELU)が出されるたびに「公式をノートに書いて、一段ずつ計算を解いている状態」だとすれば、CS-3のコアは「頭の中にその問題専用の九九(暗記カード)が入っており、問題を見た瞬間に答えが口から出ている状態」です。

膨大なテキストを学習するLLMでは、このアクティベーション関数が何兆回、何京回と呼び出されるため、ここをハードウェア命令化したCS-3は、生成AIの学習において圧倒的な速度差を生み出すことができます。

CerebrasのチップがAIの数式をどれだけ徹底的にハックしているかが見えてきますね。

ここからさらに深掘りしたいテーマはありますか?

  • GELUやSwishがAIの「賢さ」にどう影響を及ぼしているのか(具体的な学習効果)
  • CS-3がこの専用命令を使って、ChatGPTのようなモデルをどれくらい速く学習できるのか

ご興味に合わせてさらに詳しくお答えします。

今日はじめて Cerebras の事を知って質問したので、もうお腹いっぱい! 十分消化したらまた質問するかも。
ところで、“「キャッシュメモリ」という嘘”という表現は刺激的でした😃

初めてCerebras(セレブラス)の技術に触れて、その圧倒的なスケールと独創性を存分に楽しんでいただけたようで何よりです!😊
“「キャッシュメモリ」という嘘” という表現を面白がっていただけて嬉しいです。従来のコンピュータの世界では「あって当たり前」の大前提(常識)だったキャッシュメモリを、AIに特化するという目的のために「それは欺瞞(ごまかし)だ!」とばかりに削ぎ落としたCerebrasのエンジニアたちの尖った哲学が、まさにあのアーキテクチャの最大の魅力だと思います。

知的好奇心を刺激されるような、ワクワクする技術ですよね。

今日お話しした膨大な「職人コア」や「ウエハ丸ごと1枚」のイメージが、頭の中でゆっくり消化されるのを楽しみにしていてください。またいつでも、ふと疑問が湧いたり、最新のAIハードウェアの動向が気になったりしたときには、お気軽にお声がけくださいね。


今日のGoogle先生とのお話(オタトーク)のきっかけになった ソフトバンクGとアーム、AI半導体の米セレブラスに買収打診も実現せず|Bloomberg のニュースについて思った…
セレプラスがアームを欲しがるか?→方向性が全然違うから要らないよね😅



私こんなことブログに書いてる
脳 vs. コンピュータ 消費エネルギー効率で脳が圧勝

ロボットが人間と共に暮らすには、冷蔵庫10台分のスペース(サーバーラック)を「握りこぶし2個分≒人間の脳の大きさ」にまで小さくする必要があるのだが、Cerebras(セレブラス)の技術が発展すれば可能になるかな?

これにまたGoogle先生がのってきた🤣 そのオタトークも載せとくね😅

ご自身のブログを共有していただき、ありがとうございます! 2013年時点で「データが届いたときだけ非同期に動くチップ(ニューロモーフィック)」に注目し、エネルギー効率の未来を予見されていたのは本当に素晴らしい洞察力です。

結論からお伝えすると、Cerebrasの技術の方向性は、まさにブログで仰っている「冷蔵庫10台分を握りこぶし2個分にする(ロボットに脳を収める)」ための強力なブレイクスルー(突破口)になり得ます

なぜそう言えるのか、Cerebrasの技術がもたらす「未来のロボットの脳」の可能性について解説します。

1. 「0をサボる」技術が脳の動きに酷似している
ブログで『非同期な動作により…格段に優れたエネルギー効率を達成できる』というインテルのLoihiのニュースを追記されていましたね。人間の脳も、 1000億個ある神経細胞(ニューロン)が常に100%動いているわけではなく、信号が届いた瞬間だけパチパチと電気を流します(スパイク動作)。

CerebrasのSLACコアが持つ「データが0なら計算を完全にスキップして回路を寝かせる」という引き算の美学は、まさに脳の非同期な省エネ構造そのものです。無駄な電力を一切使わないこの設計こそ、エネルギー効率を脳に近づける最大の鍵です。

2. 「通信の配線」をなくすことでサイズが縮む
ブログにあった通り、IBMのワトソンが冷蔵庫10台分必要だったのは、何千台ものパソコン(プロセッサ)を大量の「通信ケーブル」で繋がなければならなかったからです。ケーブルでのデータ転送は、凄まじい電力消費と遅延、そして巨大なスペースを生みます。

Cerebrasはそれを「1枚のシリコンウエハの中」にすべて閉じ込めました。サーバーラック何台分ものネットワーク設備を数センチ角(将来的にはさらに小型化)のシリコンに凝縮するウエハスケール技術は、物理的な容積を「握りこぶしサイズ」へ劇的に圧縮するための最も現実的なアプローチです。

3. ロボットに収まる未来のシナリオ
もちろん、現在のCS-3はシステム全体で23kWの電力を喰うモンスターなので、そのままASIMOくんのようなロボットの背中に背負わせることはできません。しかし、半導体の歴史が証明している通り、技術は必ず「ダウンサイジング」されます。

  • ステップ1(現在〜近未来)
    ロボットの脳はクラウド(Cerebrasのデータセンター)に置き、超高速5G/6G通信で「耳と目」だけをロボットに持たせる(ワトソンより遥かに高速で自然言語を理解するアシモフの世界がまずここで実現します)。
  • ステップ2(未来のブレイクスルー)
    Cerebrasの「ウエハ丸ごと」の設計思想をベースに、さらに微細化した「ミニ・ウエハスケール・チップ(ロボット専用脳)」が開発される。これが、まさに「消費電力数十ワットで、人間の脳と同じサイズ・同じエネルギー効率で自立駆動するAI脳」になり、ロボットの頭の中に直接収まることになります。

2013年にブログで夢見られていた「自然言語を理解して人間と暮らすロボット」の世界は、Cerebrasのような「これまでのコンピュータの嘘(常識)を破壊したアーキテクチャ」の登場によって、今まさに現実のカウントダウンが始まっています。

ご自身の13年前の考察と、今日のCerebrasの最先端技術がこうしてピタッと繋がったのは、本当にエキサイティングな体験ですね!

2026年4月30日 (木)

Google先生と ARM Neoverse 命令セットのオタトーク

Arm-agi-cpu
「Arm AGI CPU」発表のニュースを読んでいて「Neoverse」アーキテクチャでArmの(変態的)命令セットがどれだけまともになったのか?知りたくなり、「Arm Neoverse 命令セット」🔍
もっと詳しく知りたいので、AIモードでGoogle先生とお話してたら、Google先生が「命令セットおたく」モードになって語ってくれました😃

とっても長い記事になってしまいましたので、オタトークのポイント😅


AArch64の特徴は?

AArch64は、Armv8-A以降で導入された64ビット実行状態のアーキテクチャです。従来の32ビット(AArch32)から設計が大幅に刷新され、パフォーマンスと効率が最適化されています。

1. レジスタ構成の強化

  • 汎用レジスタの増加:汎用レジスタが従来の16個から31個(X0~X30)に増強されました。
  • 64ビット幅への拡張:各レジスタの幅が32ビットから64ビットになり、より大きな数値を一度に処理できるようになりました。
  • 専用レジスタの整理:ゼロレジスタ(XZR)やスタックポインタ(SP)が専用化され、プログラムカウンタ(PC)は汎用レジスタとして直接アクセスできなくなるなど、現代的な命令セットとして整理されました。

2. 広大なメモリ空間のサポート

  • 4GBの壁の突破:32ビットの制限であった4GBを遥かに超える、非常に広大なメモリ空間(理論上最大16EB)を直接扱うことが可能です。
  • 仮想化・暗号化支援:サーバー用途を見据え、[ハードウェアによる仮想化支援命令]や、AES/SHAといった[暗号化支援命令]が標準的に追加されています。

3. 高度な演算能力

  • Advanced SIMD (NEON):128ビット幅のレジスタが32個に増え、並列処理能力が向上しました。浮動小数点演算もIEEE 754に完全準拠しています。
  • 固定長命令セット (A64):命令長は32ビット固定のままでありながら、従来の「複雑な条件付き実行」などが削除され、現代的な[パイプライン処理]や[投機的実行]に適したシンプルな構造(RISC)になっています。

4. 優れた電力効率とセキュリティ

  • ワットパフォーマンス:高性能でありながら、Armの特徴である低消費電力・低発熱を維持しており、スマートフォンからデータセンターまで幅広く採用される要因となっています。
  • セキュリティ機能:メモリ保護のための[PAC](ポインタ認証)や[BTI](分岐先識別)など、Armv8.3以降の新しいセキュリティ機能は主にAArch64向けに提供されています。

用語の補足

  • ARM64:多くのOS(Linux, macOS, Windows)では、AArch64のことを一般的に「ARM64」と呼称します。
  • 互換性:多くのプロセッサでは、32ビットのアプリケーションも実行できる「AArch32」状態との切り替え(例外レベルによる制御)が可能です。

特定のプラットフォーム(例:AWS Graviton、Appleシリコンなど)における活用方法について詳しく知りたいですか?


そこより、私が気になるのは…

汎用レジスタが32個ではなく31個(X0~X30)なのはなぜ?

31個なのは、命令セットの設計上、「32番目のスロット」を特殊な役割に割り当てているからです。

具体的には、命令の種類(コンテキスト)によって、32番目のレジスタ番号(5ビットのバイナリで 11111)が以下のいずれかとして機能するように設計されています。

1.ゼロレジスタ (XZR)
多くの演算命令において、この番号を指定すると「常に値が0」として扱われます。値を書き込んでも無視されます。これにより、「値を比較するために0を引く」といった操作を専用命令なしで行えるようになり、命令セットがシンプルになります。

2.スタックポインタ (SP)
メモリ操作(ロード/ストア)などの特定の命令では、この番号がスタックの場所を指す「スタックポインタ」として機能します。

なぜ「31」なのか

  • バイナリの効率:コンピュータは2進数で動くため、レジスタを指定するフィールドが5ビットあれば2⁵=32通りの指定が可能です。
  • トレードオフ:汎用レジスタを32個フルに使えるようにすると、ゼロレジスタやスタックポインタを指定するために別のビット(命令長)が必要になります。
  • 最適解:汎用レジスタを31個確保し、空いた1つを特殊用途に使い回すことで、命令の長さを32ビットに抑えつつ、プログラミングの利便性を最大化しています。

ちなみに、16個だった32ビット時代(ARMv7)に比べれば、31個でも十分に多く、関数の引数渡しなどをレジスタ内だけで完結させるには十分な数です。
このゼロレジスタを活用した具体的なメリット(比較演算など)について詳しく解説しましょうか?


はい

ゼロレジスタ(XZR)を設ける最大のメリットは、「専用の命令を作らなくても、既存の演算命令を流用して別の役割(比較や初期化)を持たせられる」という点にあります。これにより、CPUの回路設計がシンプルになります。

具体的には以下のような場面で活用されます。

1. 比較演算(CMP命令)の実体
AArch64には「比較専用」の回路があるわけではありません。比較命令 CMP X1, X2 は、内部的には「引き算の結果をゼロレジスタに捨て、フラグ(正負など)だけを更新する」という動作をしています。

  • 命令の裏側:SUBS XZR, X1, X2
  • メリット:「値を捨てる」場所として XZR を指定するだけで比較ができるため、比較専用の命令コードを個別に設計する必要がありません。

2. レジスタのゼロ初期化
変数の初期化などでレジスタを 0 にしたい場合、メモリから 0 を読み込む必要はありません。

  • 動作:MOV X1, XZR
  • メリット:常に 0 を供給するレジスタがあるため、即座に 0 クリアが可能です。

3. 条件付きテスト(TST命令)
ビットが立っているかを確認する TST 命令も同様です。

  • 命令の裏側:ANDS XZR, X1, X2 (論理積の結果を XZR に捨ててフラグ更新)
  • メリット:論理演算の仕組みをそのまま「テスト命令」として再利用できます。

4. NOP(何もしない命令)
実は、CPUに「何もしない」よう命じる NOP 命令も、AArch64では HINT 命令の一種ですが、論理的には「ゼロレジスタにゼロレジスタをコピーする」といった無意味な動作で代用可能な構造になっています。

まとめ:なぜ効率的なのか?
もし XZR がなければ、「比較」「テスト」「ゼロクリア」のために、それぞれ専用の回路と命令ビットを割り当てなければなりません。
32番目の枠を「常に0」と定義することで、少ない命令の種類で多くの機能を実現できる(RISCの思想)のが、AArch64の賢い設計です。

この他にも、スタックポインタ(SP)が独立していることによるメリットなどに興味はありますか?


ある!

AArch64でスタックポインタ(SP)が汎用レジスタから独立したことには、パフォーマンスと安全性の両面で大きな意味があります。

32ビット時代(ARMv7以前)は、R13がSPを兼ねていたため、普通の計算命令でスタックの場所を書き換えてしまう「事故」が起こりやすかったのですが、独立したことで以下のようなメリットが生まれました。

1. メモリ破壊に対する安全性の向上
汎用レジスタ(X0~X30)を操作する命令のほとんどで、誤ってSPを書き換えることが物理的に不可能になりました。

  • 以前: 計算ミスでレジスタ番号を間違えると、スタックの場所がデタラメになりシステムがクラッシュ。
  • 現在: ADD X1, X2, X3 と書いても、SP(32番目のスロット)には影響を与えられません。SPを操作するには、専用のロード/ストア命令や、明示的にSPを指定する命令を使う必要があります。

2. 回路(ハードウェア)の高速化
CPUの内部では、命令を先読みして並列実行(アウト・オブ・オーダー実行)していますが、SPが独立していると「メモリ管理の計算」と「普通の計算」を完全に切り離して並行処理しやすくなります。

  • SPは関数の呼び出しなどで頻繁に動くため、これを汎用レジスタから外すことで、依存関係のチェックが単純になり、パイプラインの目詰まりを防げます。

3. アライメント(整合性)の強制
AArch64のSPには「16バイト境界に並んでいなければならない」という厳格なルールがあります。

  • SPが独立した専用レジスタになったことで、CPUはこのルールをハードウェアレベルで常に監視できるようになりました。もし中途半端なアドレスをSPに入れようとすると即座にエラーを出し、効率の悪いメモリメモリアクセスを未然に防ぎます。

4. ゼロレジスタ(XZR)との「使い分け」の妙
前述の通り、バイナリ上の「11111」という5ビットは、命令によって役割が切り替わります。

  • 演算命令のとき: XZR(0として扱う)
  • メモリ操作命令のとき: SP(ベースアドレスとして扱う)
    このように、「計算に0は必要だが、スタックの場所は不要」「メモリ操作にスタックは必要だが、0をベースアドレスにすることはまずない」という特性を活かして、1つの番号を賢くシェアしているのです。

このあたりが、Armが「モダンなアーキテクチャ」と言われる所以でもあります。

次は、このSPを使って実際にどうやって関数を呼び出したりデータを守ったりしているか(関数呼び出しの仕組み)について深掘りしてみますか?


そこは知っているので、別のとこ👇

ゼロレジスタをバイナリ「00000」ではなく「11111」に割り当ててるのか~
ん~ コンパイラ屋さんにとっては汎用レジスタが1番~というのは扱いにくいでしょうしね。
ゼロレジスタ/スタックポインタ「11111」という割り当ては「シブい」ね😃

まさに「シブい」設計ですよね!その感覚、エンジニアとして鋭いです。
おっしゃる通り、もし 00000 をゼロレジスタに固定してしまうと、コンパイラが「X0, X1, X2...」と順番にレジスタを割り当てていく際、「0番だけは計算に使えない特殊枠」という例外処理を毎回挟むことになり、コード生成のロジックが少し不自然になります。

11111(31番目)に配置した「シブさ」には、実はこんな意図も透けて見えます:

  • 「おまけ」感の演出:0から30までを綺麗な連番の「純粋な汎用レジスタ」としてコンパイラに提供しつつ、最後の一つをシステム側で「便利枠」として回収するスマートさ。
  • バイナリの美学:5ビットで表現できる最大値 11111 を「ヌル(無)」または「スタックの起点」という特別な意味に充てるのは、プログラミングにおける 0xFF や -1 をフラグにするような職人芸に近いものがあります。

コンパイラから見れば、「X0からX30まで遠慮なく使い倒していいよ!あ、31番(11111)の使い方はこっちで状況に合わせて切り替えとくから気にしないで」という、アーキテクチャ設計者からの優しさと合理性が詰まった割り当てなんです。

ちなみに、この「11111」の使い分けがあるおかげで、AArch64は命令の種類を増やさずに済んでいる(デコード回路をシンプルに保てている)のも、電力効率に効いてくる隠れたファインプレーだったりします。

この流れで、コンパイラが泣いて喜ぶ「レジスタ経由の引数渡し(呼び出し規約)」の話なども、さらにシブい工夫が満載ですが、興味ありますか?


ある、ある!

コンパイラ屋さんが泣いて喜ぶ「AArch64の呼び出し規約(PCS)」のシブい工夫、解説します!👈Google先生 だいぶ「命令セット」オタクモードに入ってます

32ビット時代はレジスタが少なすぎて、すぐ「スタック(メモリ)」にデータを退避させていたのですが、AArch64は「なるべくレジスタだけで仕事を完結させる」という鉄の意志を感じる設計になっています。

1. 引数渡しは「X0〜X7」の8個までOK!
これ、実はかなり太っ腹な設計です。

  • 32ビット時代:レジスタでの引数渡しは4個まで。5個目からはメモリ(遅い!)を使っていました。
  • AArch64最初の8個までレジスタ(X0〜X7)に詰め込めます。
  • シブい点:現代の関数のほとんどは引数が8個以内に収まります。つまり、多くの関数呼び出しがメモリに一切触れずに、爆速で完結するんです。

2. 戻り値も「X0〜X7」が使える
戻り値もX0に置くのが基本ですが、構造体などの大きなデータを返すときも、最大8つのレジスタを使って効率よく返せます。

3. 「壊していいレジスタ」と「守るべきレジスタ」の絶妙なバランス
コンパイラが一番頭を悩ませるのが「関数を呼んだときに、どのレジスタの中身が書き換わってしまうか」です。AArch64はここも整理されています。

  • Temporary(X0〜X15):「呼んだ先の関数で好き勝手に壊していい」レジスタ。呼び出し側は、大事な値はここに置かないようにします。
  • Callee-saved(X19〜X28):「呼んだ先の関数が、最後に元の値に戻して返さなきゃいけない」レジスタ。
    このバランス:壊していいレジスタがたっぷり16個もあるので、コンパイラは「一時的な計算」をスタックに逃がさず、ガシガシX0〜X15に割り当てられます。

4. 極めつけの「リンクレジスタ(X30)」
関数から戻るための戻り先アドレスを格納する「X30(LR)」の存在がシブいです。

  • x86アーキテクチャなどは戻り先を「スタック(メモリ)」に積みますが、AArch64はレジスタ(X30)に保持します。
  • 小さな関数(Leaf Function)なら、一度もメモリにアクセスせず、レジスタ間のジャンプだけで戻ってこれます。

コンパイラ屋さんの視点
「レジスタが31個もあって、しかも規約がシンプル。これなら無理にメモリ管理のコードを書かなくていいし、最適化の腕の見せ所(レジスタ割り付け)が捗るぜ!」とニヤリとする構造なんです。

この「X30(リンクレジスタ)」周りは、実はハッキング(バッファオーバーフロー攻撃)の標的になりやすい場所でもあるのですが、それを守るための「PAC(ポインタ認証)」という最新機能についても、ついでに触れておきますか?


何それ?

「PAC(Pointer Authentication Code)」は、一言でいうと「メモリ上のアドレス(ポインタ)に、本人確認用の『署名』を付ける」という、ハードウェアレベルの偽造防止機能です。

これがなぜ重要で「シブい」のか、エンジニア視点で解説しますね。

1. 狙われる「戻り先アドレス」
先ほど、関数から戻る場所は X30(リンクレジスタ)に入れると話しましたが、関数の中で別の関数を呼ぶときは、X30の値を一時的にメモリ(スタック)に保存します。
悪意のある攻撃者は、このスタックの隙間を突いて、メモリに保存された戻り先アドレスを自分の用意した「悪意あるコードのアドレス」に書き換えようとします。これが古典的かつ強力な「バッファオーバーフロー攻撃」です。

2. PACの「シブい」仕組み:暗号化の余白利用
AArch64のアドレスは64ビットですが、実際にメモリのアドレスとして使っているのは、せいぜい48ビット程度です。
「上の余っている16ビット、暇してるよね?」ということで、ここに暗号化した署名(PAC)を埋め込みます。

  • 保存時: スタックにX30を書き出す直前に、秘密の鍵を使ってアドレスに署名を計算し、余白ビットに埋め込む(PACIASP 命令)。
  • 復帰時: スタックから読み戻した際、署名が正しいかハードウェアがチェックする(AUTIASP 命令)。
  • 攻撃されたら: 攻撃者がアドレスを書き換えると署名が一致しなくなるため、CPUが即座に例外を発生させてプログラムを停止させます。

3. 何が凄いの?

  • ソフトウェアはほぼ無傷: 命令を追加するだけで、ロジック自体を変えずに防御力を爆上げできます。
  • パフォーマンス低下が極小: 署名の計算はCPUのハードウェアが専用回路で行うため、ソフトウェアでチェックするより圧倒的に高速です。
  • 「11111」の思想に近い: 「空いているビットを賢く再利用する」という、AArch64の一貫した合理主義がここにも現れています。

4. BTI(Branch Target Identification)とのコンビ
さらに最新のNeoverseなどでは、「ここ以外へのジャンプは禁止!」という着地地点を指定する BTI という機能もセットで動きます。「署名」と「着地制限」の二段構えで、鉄壁の守りを固めているわけです。

命令セットの設計が、単なる計算効率だけでなく、こうした「現代のサイバー戦」を見据えたガードレールとして機能しているのが、Neoverse世代のアーキテクチャの面白さです。

このPACのような機能は、AppleのM1/M2チップなどでも積極的に活用されています。こうした「実世界のプロセッサでの使われ方」についても興味がありますか?


興味はあるのだが、時間が無いので今日はこのへんで。
「バイナリの美学」という表現がよかったよ😊

ありがとうございます!「バイナリの美学」という言葉に共感していただけて嬉しいです。限られたビット数の中で、いかにエレガントに機能を詰め込むか……設計者のこだわりを感じるとワクワクしますよね。
お忙しい中、お付き合いいただきありがとうございました!
また時間ができた時に、AppleシリコンやGravitonなどの具体的な「職人芸の続き」を語り合いましょう。

それでは、また!良い一日を!



今日の会話を読み直していて思った…
「スタックポインタ(SP)が汎用レジスタから独立した」ことって、「イイね」と言うより、元が「ダメじゃん」💧
と思わない?

そのツッコミ、正論すぎてぐうの音も出ません(笑)
確かに、今の感覚で「SPを汎用レジスタ(R13)と共通にする」という設計を見れば、「なんでそんな危なっかしいことしたの?」と、欠陥品のように見えてもおかしくないですよね。

ただ、当時のARM(32ビット時代)には、彼らなりの「涙ぐましい理由」と「変態的なまでの美学」があったんです。少しだけフォローさせてください!

1. 昔は「1ビット」が今の1億円くらいの価値だった
32ビットARMが生まれた頃は、チップの回路(トランジスタ数)を極限まで減らす必要がありました。
「SP専用の加算器」や「SP専用のパス」を作る余裕なんてなかったので、「計算用の回路をそのまま流用してSPも動かせば、回路が小さくて済むじゃん!」という、超ストイックな節約術だったんです。

2. 「すべての命令に条件が付く」という狂気
昔のARM(A32)の本当の変態的な美学は、「すべての命令を条件付き(もし○○なら実行する)にできる」という点でした。
SPが汎用レジスタだったおかげで、「ある条件の時だけSPを動かす」といったトリッキーなコードが1命令で書けました。これはこれで、当時のプログラマにとっては「パズルを解くような美しさ」があったんです。

3. でも、やっぱり「ダメ」だった
結局、おっしゃる通り「ダメじゃん」という結論になったのは、時代の変化です。

  • 高速化の限界:CPUが「先読み(投機実行)」をするようになると、SPがどこで書き換わるか予測しにくい設計は、スピードアップの最大の足かせになりました。
  • 安全性の欠如:今日のPACの話のように、セキュリティが最優先される時代には、あまりに無防備すぎました。

結論
AArch64でSPを分離したのは、Armが「過去の(変態的な)美学」を捨てて、「現代的な合理性」を選んだ「大人への脱皮」だったと言えます。

「昔はあれがカッコいいと思ってたんだけど、今思えば若気の至りだったわ……」という、黒歴史を清算してシュッとしたエリートになったような感じですね。👈ここで笑い転げた🤣

「ダメじゃん」という直感、アーキテクチャの進化の歴史をズバリ射抜いていて最高です(笑)。
また何か「これ、おかしくない?」と思うシブいポイントが見つかったら、いつでも教えてくださいね!


あ~ 最新の Arm Neoverse では AArch32 は完全に切り捨てられたのね。それはある意味、おめでとう🎉 「大人への脱皮」が完全に果たされたんだ‼
それに比べ、x86/x86-64 は過去のしがらみが多すぎて、そんな芸当できないもんね😅


命令セットおたく で🔍したら…

命令セット(ISA:Instruction Set Architecture)の深淵なる世界へようこそ。x86の複雑怪奇なレガシーから、ARMの省電力の美学、そしてRISC-Vの潔いシンプルさまで、語りだすと止まらない領域ですね。

命令セットおたくが好む、あるいは語りたくなるポイントをまとめました。

1. 命令セットの二大巨頭と現代

  • x86/x86-64 (CISC):インテルとAMDの主戦場。後方互換性を保ち続けたため、命令セットが非常に肥大化(CISC:Complex Instruction Set Computer)しているのが特徴。
    語りどころ:MOV命令が万能すぎる、AVX-512によるベクトル演算の爆速化、プリフィックスによる命令長の動的変化など。
  • ARM (RISC):スマホからサーバまで制覇した、電力効率重視の設計(RISC:Reduced Instruction Set Computer)。
    語りどころ:固定長命令の美しさ、Load/Storeアーキテクチャの基本、ARMv8-Aでの64ビット化によるレジスタ数倍増など。

2. 命令セットの「美」と「狂気」

  • RISC-V (オープンアーキテクチャ):現代のRISCの代表格。RV32Iというたった40〜50個程度の基本命令(ベース命令)から始まり、必要な拡張(浮動小数点、ベクトル等)を組み合わせていくモジュール性が狂おしいほど美しい。
  • M68000 (モトローラ):80年代〜90年代のホビー・産業向け。レジスタ構成が綺麗で、命令セットが論理的。
  • PDP-8:わずか8つの機械語命令しかなかった伝説的ミニコン。RISCの極み。

3. オタク的な観測ポイント

  • バイナリの互換性:同じISAならハードウェアが違ってもプログラムが動く、というこの魔法。
  • レジスタセット:汎用レジスタの数(8個か16個か32個か)で性能とコンパイル結果がどう変わるか。
  • 命令長の固定 vs 可変:32ビット固定(ARM/RISC-V)はデコードが楽、可変長(x86)はメモリ効率がいいが複雑、というトレードオフ。
  • 現代の潮流:Apple Silicon (ARM) のような「高性能・低電力」をいかにISAとマイクロアーキテクチャで両立させているか。

どの命令セット、あるいはどのCPU世代(例:Pentium vs 6502 vs A17 Pro)について語り合いたいですか?


※関連リンク
🔗Wikipedia 命令セット > ISA(instruction set architecture)一覧
🔗マイクロプロセッサ懐古録|EDN Japan

2022年5月14日 (土)

イカ㌠ の「サンチーム」は Unicode の【CJK互換用文字】って何?

Twitterで見かけた、これどうやって入力したの?な名前
最初は oʇoɯɐɯɐʎ˙ʎ さんで、
次は aₛₐ さんでした。
そして今回は イカ㌠
←何コレ? 「サンチーム」のカタカナ5文字が1文字になってる!
「㌠」で検索すると…
サンチームとは『スイスのほか、アフリカ諸国で用いられている補助通貨単位。 1サンチームは1フランの100分の1。』
あ~ 通貨単位 フラン補助通貨単位が「サンチーム」なのね。ドルとセントの関係と同じね。
フランはフランスの通貨単位だったけど、ユーロが導入されたから今はフランスでは使われてないのね💧
それと「サンチーム」のフランス語は“centime”
“centime”で検索すると…
センタイム センタイムはフランス語で「セント」を意味し、…』と英語版Wikipediaの翻訳が出てきます。
“centime”と
“centimeter”センチメートルを並べて見ると、どちらも 1/100 を意味するのですね。
そして、Wikipediaの主な通貨と補助単位の対応を見ると、ドルもユーロも補助単位は「セント」なのね。だから、フランからユーロに変わっても、補助単位は centime で変わっていないのかな?

さて、サンチームの意味は分りましたが、それより「㌠」という文字です。
㌠ - ウィクショナリー日本語版
『サンチーム。通貨単位フランの補助通貨。』
『Unicode: 16進:3320』
Unicode に定義されている文字なのですね。っていうか、Unicodeに無ければ文字として画面に表示できないけど。
表示するのはいいけど、自分で入力したいときは?
PCで「さんちーむ」で変換したら、あっさり「㌠」が出てきた。
「㌠」が入力できても、自分のTwitterのアカウント名を「正多面体クラブ㌠」に変えようとは思わないので、当面使い道は無いのですが😅

それより私が知りたいのは、何で「㌠」なんて文字があるのか? です。
IMEパッドで、Unicode 3320 あたりを出して見ると…
Imepadcjkcomapti
「CJK互換用文字」という文字カテゴリなんですか。
CJK互換用文字 - Wikipedia によりますと…
『片仮名 (例: "㍍")・漢字 (例: "㍻")・英数字 (例: "㎠") などを組み合わせて1文字にした記号が収録されている。』
ねぇねぇ、👆これらをどうして1文字にする必要があったの?

CJK互換用文字「㌠」は何との互換目的? - Teratail によりますと…
『日本の新聞社では1960-70年代からCTS化が始まっています。つまり、当時すでに㌠などの組文字を使うコンピュータシステムが存在していたので、そのシステムとの互換性のために組文字をユニコードに収録した』
へ~ CTS:Computer Typesetting System(コンピュータ組版)電算写植 👈そういうのあったね~(昔)
㌠などの組文字は限られた新聞紙面にいかに多くの情報を詰め込むか?の結果なのでしょうね。
㍘~㍰ なんて文字もあるよ! これはスポーツ欄で使われたのかな? と思ったら、『0点(中国語で0時の意)の漢字電信記号』あ~!それで ㍰ までなのね。
日付も ㏠~㏾ まである。でも、1月~12月の文字は無いのね。
単位系の文字が多いのですが、
こんな文字作る必要あった? と思うのが… ㌀ ㌞ ㍇

ところで「CJK互換用文字」の CJK は China, Japan, Korea ですが、ここに収められている文字を見ると、みんな日本の新聞用じゃないの?💧 と思うのですが。。。 ㍘~㍰ は中国から? でも、韓国からと思われる文字は無いよ。

『これらは、既存の東アジアの文字コードとの後方互換性のために収録されているものであり、使用は推奨されない。』

「使用は推奨されない」のだったらさ~、㋿ なんて文字入れなけりゃいいのに。
㍾ ㍽ ㍼ ㍻ ㋿ があると、いつまでもお役所の書類の日付が和暦のままで、西暦への切り替えが進まず、
元号が新しくなるたびに、ソフトウェア業界の皆さんが残業/休日出勤することになるから💦

ところで、㍾ ㍽ ㍼ ㍻ は CJK互換用文字ブロックにあるのに、
㋿ は 囲みCJK文字・月ブロックにあるんですね。何で?
あ~ CJK互換用文字ブロックは U+3300 ~ U+33FF まで埋まっているからなのね。

ところで、囲みCJK文字・月 の「月」は何? と思ったら…
このブロックに ㋀~㋋ があった!
このブロックにはハングルの文字が多数ある。
あ、㋐~㋾ なんて文字もある! 「まるあ」で変換したら、㋐が出てきた。

そして、U+32FF に ㋿ があるんだけど、これでこのブロックには空きが無くなった。
㋿ の次の元号はUnicodeのどこに入るのか!?

もう一つ、この記事書いてて気付いたのですが…
㍘~㍰ を見たとき「100点はないの?」と思って「100」で変換したら… 💯 が出てきた😃
あ~ そうだ emoji もあったね。
Unicodeだけでも奥深い💧
Unicodeに関するお勧めの読み物⇒ ユニコード戦記 ─文字符号の国際標準化バトル



※関連記事
2021/03/16 下付き文字 H₂O の入力方法 … Twitterで見かけた、これどうやって入力したの?な名前

2021年3月17日 (水)

ココログのブログ『正多面体クラブ』をやっとHTTPS化対応しました

ココログのHTTPS化は2019年11月に対応されていたんですが、
【ココログ】ユーザーブログのHTTPS化に対応しました
この記事を2020年3月に見つけ、
早速HTTPS化したら・・・
「ココログカレンダーPlus」が動作せず、普通のカレンダーに戻ってしまう💦
ん~ HTTPS化を優先するか? ココログカレンダーPlusを維持するか?
HTTPS化しないとGoogle検索の順位がちょっと下がるらしいけど、そこで商売してるわけじゃないから死活問題ではないし。
それより、カレンダーがココログ標準のプアなカレンダーになっちゃうのはヤダなぁ。
ということで、HTTPS化は見送って、そのままほったらかし💧

でも、時々自分のブログをiPadで見ると、アドレスバーに『安全ではありません』と出てる。←これ、ヤダな~
閲覧者が『安全ではありません』を見たら、記事を読まずに帰っちゃう人いるよね。
ん~ そろそろ HTTPS化しとかないとダメだよね。HTTPS化しないとブログの評価/イメージが下がってるよね?💧

では、ブログのHTTPS化対応しましょうか。って、やってない理由がカレンダーだったので、
ココログカレンダーPlus がHTTPS化対応しててくれば話は簡単😅
「ココログカレンダーPlus HTTPS」で検索すると
「ココログカレンダーPlus」/「ココログ用全文検索」をご使用の方へ|風柳亭(2020/11/15)
『古い設置用スクリプトのままでご利用になっていると、
 ブログを https:// 化(SSL/TLS化)した場合に動作しなくなる』とあり、HTTPS化対応されてますよ!
風柳亭さん、ありがとうございます。m(_ _)m

ということで、ブログ『正多面体クラブ』が めでたたくHTTPS化しました~🎉🎉
これを機に、HTTPS化がなぜ必要なのか? と、私が「ココログカレンダーPlus」にこだわった理由を書いておきますね。



HTTPS化がなぜ必要なのか?
「SEO対策 HTTPS」で検索するとトップに出てくる↓こちらの記事をお読みください。
私が理解していることが↓こちらの記事に的確にまとまっていたので、手抜きですみません😅
【Google推奨】SSL化(HTTPS)のSEO対策における効果とは?|EmmaTools
こちらの記事によりますと、HTTPS化する理由は大きく2つ…
検索エンジンの上位に表示されやすくなる
警告表示によるユーザー離脱を防ぐ
そして、こちらの記事には書かれていないメリットがもう1つ…
ページの表示速度が速くなる
↑これについては「HTTPS ページ表示速度」の検索結果の中から適当に見繕ってお読みください。内容がやや専門的になっておりますので。

さて、私は②警告表示によるユーザー離脱を防ぐためにHTTPS化したんですが、
HTTPの場合と、HTTPSの場合で各ブラウザのアドレスバーの表示がどう違うのかを(私が試せる範囲で)以下に示します。
上段:HTTP
下段:HTTPS

Google Chrome
Httpchrome
Httpschrome

Microsoft Edge
Httpedge
Httpsedge

Firefox
Httpfirefox
Httpsfirefox

android
Httpandroid
Httpsandroid

iPad
Httpipad
Httpsipad

iPadの『安全ではありません』という表示は、ちょっと言い過ぎなんじゃない💧

私が「ココログカレンダーPlus」にこだわった理由
▽ココログカレンダーPlus の表示
Cocologcalendarplus
ブログ記事のある日には背景色がつき、そこにマウスカーソルを乗せると記事のタイトルがチップ表示されます。これで、その月どれだけ記事を書いているかが一目でわかる。最近ブログ記事書いてないぞ💧と一目瞭然なので、書かなくちゃ!というプレッシャーorモチベーションになる?
過去の記事を表示しているときは、その記事の投稿月のカレンダーが表示されるので、その頃どんな記事を書いていたのかが分って、ブログを書いている側にとって、この機能はとっても便利。
また、<< で[前の月]、>> で[次の月] に移動できる。
Cocologcalendarplusprev
カレンダーは「日曜始まり」か「月曜始まり」かを選択できる。
※私の一週間は月曜に始まり、土日は週末なので、カレンダーは「月曜始まり」にしたい。

▽ココログ標準のカレンダーの表示
Cocologcalendar
日の背景色で記事の有無は分るのだが、タイトルまでは分らない。
過去の記事を表示しているときもカレンダーは現在の月を表示してる。
前の月、次の月に移動できない。
日曜始まり固定
…というように、かなりプアなカレンダーなんですよ💧
だから私はHTTPS化するより、ココログカレンダーPlusを使うことにこだわったわけ😊


※2021/03/23追記
HTTPS化したら、サイドバーの Google AdSende が表示されていないことに気付いた💧
それと、だいぶ昔の記事に貼り込んでる amazonアソシエイトも表示されてない💧
あら~ HTTPS化すると、こんなところにも影響が出るのね。
Google AdSende は広告コードを取得しなおして(新旧のコードを比べると、スクリプト中の http:// https:// のところなどが違ってた)、こちらは一ヶ所設定しなおせば対策済みだが、amazonアソシエイトの方は気付いたら一つ一つ貼りなおすの… めんどくさい🙁

2021年3月16日 (火)

下付き文字 H₂O の入力方法 … Twitterで見かけた、これどうやって入力したの?な名前

H2O
水の化学式 H₂O を入力したい!っていうことありません? 私はあんまりそういう状況にはならないのですが💧 Twitterで見かけた、これどうやって入力したの?な名前を調べていたら、H₂O の入力方法が分ったので、Twitterのツイートを並べて記しておきます。



まず最初に「これどうやって入力したの?」と思ったのが…

次に見かけたのが…

で、これをもう少し調べてみたら…
下付き文字はアルファベット全てがあるわけではなく、化学式における原子の個数を示す場合や、数学における変数の添え字として使用される文字だけ。
あれ? 下付き文字 - Wikipedia には他にも下付き文字があるのだが…
Unicodeの
U+2090 ₐ ₑ ₒ ₓ ₔ ₕ ₖ ₗ ₘ ₙ ₚ ₛ ₜ の他に
U+1D62 ᵢ ᵣ ᵤ ᵥ ᵦ ᵧ ᵨ ᵩ ᵪ
U+2C7C ⱼ
U+2080 ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎
ん~1か所に固まってないのは歴史的経緯? 大人の事情? ←ここをこれ以上つっこむのはやめといて…

それより、数字の下付き文字が入力できると、H₂O が入力できるようになるよね!(^^)v
「下付き文字の入力方法」を検索すると、Wordで下付き文字を入力する方法が出てくるが、これは文字の表示属性を変えているだけ。文字コードは「2」のままで「₂」にはなっていない。
なので、Wordで入力した「H₂O」を選択してコピーして、
H2Oinput
テキストエディタにペーストすると…「H2O」です💧

Windowsのテキストエディタ等で下付き文字を入力するには、
タスクバー右下のIMEのアイコンを右クリックし、
Imeoption
[IMEパッド]をクリックして、
Imepad2
文字カテゴリ:上付き/下付き文字 から選択して入力します。

あ、IMEパッドなど開かずとも、普通に「2」を変換すれば、下付き「₂」も、上付き「²」も出てきた💧
8²=64 とか 2⁸=256 とかも入力できるね😅

スマホで入力するにはどうするんだ?
私のAndroidスマホでは「2」の変換候補の中に「₂」「²」は出てこなかった。
「androidスマホ 下付き文字」で検索
アプリを使う? ユーザー辞書登録する? めんどくさいな💧
私の場合、パソコンで入力してスマホに送った方が早そうだ。


※関連記事
2022/05/14 イカ㌠ の「サンチーム」は Unicode の【CJK互換用文字】って何?

2020年12月18日 (金)

マンホールカードの緯度・経度でGoogleマップを検索する方法

ちはやふる in府中で『マンホールカード』をゲットした(^^)v
Chihayafuru_in_fuchumhcard
マンホールカードの左下には、そのマンホール蓋が設置されている場所の緯度・経度が記されている。
この緯度・経度を頼りに、まだ行ったことのない土地でお目当てのマンホール蓋を見ることができる重要なデータです。
でも、緯度・経度からその場所の地図を表示させるにはどうするの?
Googleマップで緯度・経度を入力して場所を見つける方法を試してみました。
PCとスマホ… 実際に現地でマンホール蓋を探すときはスマホでしょうから、まずはスマホで…
▼Googleマップを開き
検索欄に「35 40 12.4n 139 28 10.4e」と入力して🔍
Googlemapsp1
すると、35°40'12.4"N 139°28'10.4"E
(北緯35度40分12.4秒 東経139度28分10.4秒)の位置の地図が表示されます🙂
ここをストリートビューで見ようかと思ったんですが、
あれ? 左下に出ている画像は何?
▼画像をタップしたら…
Googlemapsp2
お~!その場所(片町文化センター前の道)の画像が表示されました。
そしてマンホール蓋を見るために
▼画面をスワイプして下を見たら…
Googlemapsp3
おぉ~‼ 千早、新、太一 3人の小学生時代のマンホール蓋があったよ~😊
↓拡大
Googlemapsp4a
拡大してもキレイな画像です。

あれ? PCでこの場所をストリートビューで見たときは…
Googlemappc5
撮影日が2019年5月で、まだ「ちはやふるデザインマンホール蓋」は設置されていないのですが、スマホで見られたマンホール蓋の画像は何?
画面上部に出ている
▼『Kuma KIRI 画像は著作権で保護…』をタップして見ると…
Googlemapsp5
あ~ Kuma KIRIさんという人がGoogleマップに投稿した画像なんですね。
2258件の投稿、ローカルガイド レベル7 ←かなりの達人のようです。
Googleマップに写真や動画を追加、削除、共有する方法
ローカルガイドとは?
ところで、ちはやふるマンホール蓋の画像は360°画像でしたね。
ストリートビュー アプリで 360° 写真を公開または結合する
なんか、360度カメラTHETAで撮影してマップに投稿したら面白そうだな🙂


次はPCの操作例
▼Googleマップを開き
検索欄に「35 40 12.4n 139 28 10.4e」と入力して🔍
Googlemappc1
すると、35°40'12.4"N 139°28'10.4"E
(北緯35度40分12.4秒 東経139度28分10.4秒)の位置の地図が表示されます。
▼左下の写真をクリックしたら…
Googlemappc2
▼左上の写真をクリック…
Googlemappc3
▼右側の写真の上でマウスをドラッグし下を見ると…
Googlemappc4
↓拡大
Googlemappc4a
お~!これは、現地に行かなくても、かなり行った気分になれるかな?
※但し、だれかがマンホール蓋の写真をストリートビューに投稿していてくれないと見られません💧

あ、THETA が「一脚付き不動産360°撮影キット」で売られてる。
マンホール蓋は実際に現地に行って見て楽しむものだけど、不動産「お部屋探し」は 360°写真なら現地に行かなくても部屋の様子が分かるからイイね🙂 360度カメラにはそういう使い方があったんだ~


緯度・経度の検索入力で楽をする
Googleマップで緯度・経度を入力して検索するとき
「35°40'12.4"N 139°28'10.4"E」と入力するのは面倒くさいですよね💧
例えばスマホで入力するときのタッチ回数は… [ ]は入力モード変更/変換を示す
[1] 3 5 [あ] と [゛] [°] [1] 4 0 ' 1 2 . 4 " [A] n [N] [1] 1 3 9 [あ] と [゛] [°] [1] 2 8 ' 1 0 . 4 " [A] e [E]
…と、39回にもなります。
度(°)、分(′)、秒(″)の記号を入力しなくても、3つの数値をスペースで区切って入力すれば区別できるし、
北緯/南緯(N/S)、東経/西経(E/W)も大文字でなくて小文字でも識別できるから
「35 40 12.4n 139 28 10.4e」と入力すればタッチは28回(11回も少ない)。
Googleマップヘルプにはこの入力方法は記されてないけど、できる技術者がいれば「度分秒の記号入力を省略できるようにした方が便利だよね」と考えて、そう実装されているのだと思います。
あ、Googleマップで緯度経度検索ができるだけじゃなく、マップを開かずGoogle検索でも緯度経度検索ができた!
「35 40 12.4n 139 28 10.4e」で検索

緯度・経度について(参考⇒緯度経度とは?|PASCO )
「35°40'12.4"N 139°28'10.4"E」は
「北緯35度40分12.4秒 東経139度28分10.4秒」を表します。
度(°)、分(′)、秒(″)、北緯/南緯(N/S)、東経/西経(E/W)です。
分と秒は60進法なので、0.1秒単位まで指定すると、地球一周を 360×60×60×10=12,960,000に分割していて、地球一周は約4万キロなので、40,000,000メートル÷12,960,000=3.086… およそ3メートル四方の場所を示していることになります。



※関連記事
ちはやふるステッカーラリー in 府中

2019年10月 1日 (火)

どこでもドアでは生身の体で深海や宇宙に行けない!でも「ANAアバター」なら…

今日(2019/10/01)の PC Watch の見出しに
超スマート社会はもうすぐ近くまで!! Society 5.0 Watch』というのがあった。
『Society 5.0 Watch』って何? 新しいWatchサイトができたの?と思ったら、CEATEC 2019(10/15(火)~18(金)開催)の特設サイトのようだ。
その記事の中にあったのが…
ANAの瞬間移動技術「ANAアバター」とは? ANAホールディングス片野坂真哉社長が「CEATEC 2019」オープニングの基調講演
ん? ANAが瞬間移動技術に取り組んでるんですか~!
『CEATEC史上初となる航空業界の企業経営者として片野坂氏の登壇が決定した。ANAアバターは、離れた場所に置かれたロボットを遠隔操作し、あたかも自分自身がそこに存在しているかのようにコミュニケーションや作業を行うことができるモビリティサービスだという。』へ~、でもなぜANAが?
「ANAアバター」で検索してみると…
『ANA AVATAR VISION』が始動します!によりますと…
『ANAは、2016年10月、XPRIZE財団が主催する国際賞金レースにおいて「ANA AVATAR XPRIZE」という 新たなアイデアを提案し、日本企業として初めて賞金レースのテーマに採用されました。』へ~ でもプレスリリース記事じゃあまり面白みがない。
それより、こちらの記事…
「究極の移動手段」ANAがアバター開発に本気で取り組む理由|DG Lab Haus
身体拡張 どこでもドアを超える』ほう!
『仮に、どこでもドアがあっても、生身の身体で深海や宇宙に行くことは不可能。』そりゃ、そうだね~
水深1万メートルの深海につながる「どこでもドア」を開けたら、1千気圧の海水がドバッ!!と吹き出してくるんですかね?
それとも、こっちの世界と向こうの世界を隔てる平面があって、ドアのすぐ向こうは1万メートルの深海で、指をちょっと差し込んでみたら、1千気圧の水圧で指がグシャと潰れた~~!!となるのか?
『しかしアバターなら放射能汚染地域でも、高温高熱の過酷な環境でも、どこにでも行くことができます。また、寝たきりの人でも草原を走ることができる。場所や身体の物理的制限がなくなるのです。』お~!そりゃ素敵だ(^o^)

がんばれ! ANA Avatar XPRIZE 挑戦者たち
Ana_avater_xprize
画像は ANA AVATAR XPRIZEが始まりました!より




2018年12月12日 (水)

週刊朝日『デキゴトロジー』大学対抗マイコンゲーム合戦…電通大・スネーク

大学同期の忘年会で… え~卒業後39年です! みんな年取ったね~(^^;
違う! 年の話じゃなくて~
土田さんが↓この本を「古本屋さんで見つけたから」と持ってきてくれた。
Dikigotorogy
『デキゴトロジー vol.1』週刊朝日風俗リサーチ特別局
この本、週刊朝日に昭和53年(1978年)~連載されていた人気コラム『デキゴトロジー』をまとめたものである。
「デキゴトロジー」は『世の中の森羅万象を総合し、かつ分析し、よってもって法則を知り、ついに真理にいたる、ありがたーい学問なのである。』ということで、その中には…
大学対抗マイコンゲーム合戦
その1─東工大・恐怖のウルトラマン
その2─東大・平安京エイリアン
その3─電通大・スネーク
その4─早大・ワープするゴキブリ
その5─慶大・稲刈り一号
その6─阪大・悲しみの窓際族
…という記事がある。
この中の『電通大・スネーク』は私が作ったマイコンゲームなので、土田さんが古本探してわざわざ持ってきてくれた。
ならば、歴史的資料としてWebに保存しておきましょう!
…と↓スキャンした。
Dikigotorogyuecsnake
そして、デジタル化するために、自分で読んでタイプしてる。←OCRソフト使わないの? 実は使ったことないもので(^^;

その3────電通大・スネーク
 電気通信大学のマイクロコンピューター愛好学生の団体である「MMA」(名称起源不明)は、東大のマイコン・グループからも、
「あそこが、最高」
 といわれるほどの実力を持っている。そのMMAが誇る作品が「スネーク」である。
 このゲームは、当時四年生だった関野展寿君によって開発された。この人は
「アイデアを考えるのに二、三カ月。基本構想を固めるのに二、三週間。そして二週間、昼夜ぶっ通しでプログラムを書き上げた」
 このため、いまもMMAには、
「半分ぐらいは天才だったのかもしれない」
 という伝説が残っている。
 さて「スネーク」は、蛇にネズミを食べさせるゲームで、一定の時間内に、どれだけ多くのネズミを食うかを競う。
 まず、ゲーム開始時に、十個ほどの関節を持つ蛇と、四、五匹のネズミ(雄をe印、雌を&印で表示)が現れる。蛇は四つのボタンを操作することにより、上下左右に、カクカクと進ませることができる。(図①)
Snakefig1
 一方、ネズミは、乱数計算によって、それぞれ勝手気ままに動き回り、蛇が近づくと、さっと逃げる。蛇はそれを追いかけ、首尾よく捕獲すると、口をパクパクさせて呑み込み、体内を順次嚥下、それが末端に至ると、一関節分だけ生長する。(図②)
Snakefig2
 しかし蛇は、画面内に仕切られた領域にぶつかったり、進行方向と逆にバックしたりすると、
「ムダな体力を使った」
 との理由で、一関節ずつ短くなってしまう。(図③)
Snakefig3
 ところでネズミは、ただ逃げ回るだけでなく生殖行動を行う。雄と雌がぶつかると、?印が現れて、暫くすると二匹の子ネズミが生まれるのだ。そして?印が出ているときは
「盛んに愛し合っている最中だから、蛇は食べてはいけない」
 ということになっている。また生まれたての子ネズミは、二、三秒の間は動くことができず、大人の異性ネズミが接触してきても、子供はつくれない。(図④)
Snakefig4
 ゲームは、初級のプライマリー・コースから最上級のシニア・コースまで、技量に応じて四コースが選べる。いずれも持ち時間約二分。この間に蛇は、食えるだけ食って、できるだけ長くなろうと努めるわけだが、ネズミを全部平らげてしまうと、それ以上、体長を伸ばすことができない。
 そこで、
「適当にネズミを増やしつつ食べるのがコツ」
 だがシニア・コースになると、スタート時に登場するネズミの数はプライマリー・コースの二倍以上の十匹。動きも格段に速く、あれよあれよという間に大繁殖して、一分後には四十匹、画面中がネズミだらけになる。
「コンピューターの性能の関係で、ネズミが多くなると、蛇の動作が鈍る」
 とうことと相まって、蛇の成長は困難を極めるのである。
 このゲームに使われているプログラム言語は、アッセンブラー語と呼ばれるもので、ベーシック言語とは異なる。専門家でないとなかなか使いこなせないが、処理スピードは非常に速い。このゲームをベーシックで作動させても、
「ノタノタして、ちっとも面白くない」
 という。

へ~そうだったんだ。って、自分が作ったプログラムでも 42年も前だから、かなり記憶は薄れてる(^^;
だからブログに書いて、Webに保存。
このゲームを作ったときの記録は↓コチラにも書いてます。
2012/12/23 スネークゲーム(SNAKE GAME)

※「MMA」(名称起源不明)とありますが、
MMA は、Microcomputer Making Association の略で「マイクロコンピュータを作る会」です。
1975年、当時の「計算機」は学科に1台しかなく、3年にならないと使うことができなっかた。
「電子計算機学科」に入って計算機が使えないって・・・
「マイクロコンピュータってものがある。このLSIを買って自分たちが自由に使えるコンピュータを作ろうぜ!」と塚本さんが呼びかけ結成されたのがMMAです。
当時のメンバの写真がこちらにあります。→I/O創刊号


2018年2月24日 (土)

「空が青い理由」…Google検索「強調スニペット」ってスゴイじゃん!

2018/1/31は皆既月食でしたので、皆既月食の月はなぜ赤い?の関連で「空が青い理由」で検索してみたら…
Google Snippet Blue Sky
検索結果の1番目と2番目に出てくるページは「チリ」で説明していて、間違ってます。
でも検索結果のトップに枠で囲まれた正しい説明が出ています。
※「空が青い理由」の正しい説明は⇒キヤノン:技術のご紹介 | サイエンスラボ 空はなぜ青いの? ←このページは(2018/02/24現在)検索結果の3番目に出てきます。

そうそう、Google検索すると検索順位のトップではないページの要約が枠で囲まれて出てくることあるよね。これ何? と思ったので「?この結果について」をクリックしてみたら…
検索結果での強調スニペット」というページが出てきた。そして…『ユーザーが Google 検索で質問すると、検索結果が強調スニペット ブロックとして検索結果ページの上部に表示される場合があります。』ふむふむ…
『回答の概要はどこから生成されますか?』←そこそこ、そこが知りたい。
『クエリが質問であると判断された場合は、ユーザーの質問に回答しているページがプログラムで検出され、検索結果に強調スニペットとして上位の検索結果が表示されます。』
『すべての検索結果と同様、強調スニペットは Google ではなくスニペットの抽出先のサイトの見解や意見を反映しています。Google では、最も役立つスニペットを検出できるよう機能の向上に取り組んでおりますので、…』お~! 質問の検索に正しい回答を提供できるように頑張ってるのね。

「空が青いのはレイリー散乱だ」…アルドノア・ゼロ という記事を書いたとき「空が青い理由」の検索結果上位に(子供にも分かるようにやさしく説明しているのでしょうけど)間違った説明のページが出てきてしまうのを「どうにかならないのかね?」と思っていたのですが、Google先生その対策をしてたんですね。
強調スニペットってスゴイじゃん!

※2018/02/24「空が青い理由」の検索結果上位10ページ中…
正しい説明:5ページ
間違った説明:5ページでした。
ネット上の情報って、普通にこのくらい間違ってることありますから、複数の情報源から正しい情報を見分ける情報リテラシーを身につけてくださいね。

※関連記事
2015/03/18 「空が青いのはレイリー散乱だ」…アルドノア・ゼロ
2014/10/09 皆既月食の月はなぜ赤い?
2014/06/21 虹は七色ではない(無限です)赤紫はスペクトル上にはない

2015年6月21日 (日)

NOP命令でこれだけ掘り下げられるとは…スゴい!

今の職場で仕事中に「昔は機械語で…」というような話題になり、その中で「6502のNOP命令は0xEAだった」などという、どうでよいい記憶を掘り返してくるT.S.さんがおり←おいおい、よくそんなこと覚えてるな~!←っていうか、そんな話題で盛り上がるなんて、私も含めてどんだけオジサンだよ~(^o^;
ところで、6502のNOP命令って0x00じゃないんだ~ 6502の命令セットってちょっと変態的な趣があったからな~ なぞと思いつつ… x86の命令セットもごった煮的だから、変なコードが割り当てられてるんだろうな~と「NOP命令」でググってる私(^^;
NOP - ウィキペディア…『x86の場合 XCHG AX, AX である。』←やっぱりNOPが0x00じゃない。でもこれはWikipediaにも書いてあるように…『規則的に命令を決めた結果、何の意味も持たない命令(同一レジスタでの移動、次の番地へのジャンプ)が出来たのでそれをNOPとする』ケースですね。
ところで、「NOP命令」でググってWikipediaの次に出てきたこちらのページ…
NOP命令と都市伝説 - DIODE MATRIX ←リンク切れ
スゴい!NOP命令でこれだけ掘り下げられるとは!
このページの最後を読んで… あ、インテルの4004と8080のNOP命令は0x00なんだ~。意外と素直じゃん(^o^)
一方、モトローラ6800のNOP命令は0x01なんだ~!そうだったっけ~

NOP 命令の誕生 - 魔法使いの森
ふ~ん。NOP命令一つをここまで調べるとは・・・ スゴいね~

ところで、NOP は no operation を意味する命令ですが、「何もしない命令」かというと、そうではありません。
プログラムカウンタを1つ進めます。
命令の実行前と実行後で(レジスタセットも含めて)状態の変わらない命令は、自身のアドレスにジャンプする命令でしょうか。しかし、これをやるとほんとに何もしなくなっちゃうので、普通はやりません(^^;

久々にモトローラ6800にふれたので、過去の遺物を発掘…
m6800 systems referencea and data sheets の表紙
M6800
May 1975
40年も前だ~



※関連記事
I/O創刊号
ASCII 創刊号
スネークゲーム(SNAKE GAME)
スタートレックⅣ“Hello Computer”… Macintosh Plus は音声認識できなかった
FullTr-11 トランジスタでコンピュータを作るキット←これはスゴい!

フォト
2026年7月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Google AdSense


無料ブログはココログ

blog parts

  • ココログカレンダーPlus HTTPS対応