(Translated by https://www.hiragana.jp/)
超執行緒 - 维基百科,自由的百科全书 とべ转到内容ないよう

ちょう執行しっこういとぐち

本页使用了标题或全文手工转换
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
在 HTT 的高级描述中,指令从 RAM 中获取(不同颜色的框代表四个不同进程的指令),由前端解码和重新排序(白色框代表流水线),然后传递给能够执行在同一时钟周期内执行来自两个不同程序的指令。
ざい HTT てきだか级描じゅつちゅう指令しれい从 RAM ちゅう获取(不同ふどう颜色てきかまち代表だいひょう四个不同进程的指令),ゆかりぜんはしかい码和おもしんはいじょ白色はくしょくかまち代表だいひょう流水りゅうすい线),しかきさき传递给能够执ぎょうざいどう一时钟周期内执行来自两个不同程序的指令。

ちょう執行しっこういとぐち英語えいごHyper-Threading縮寫しゅくしゃHT[1]これえいとくなんじ專有せんゆうてき同時どうじ執行しっこういとぐち技術ぎじゅつ,於2002ねん發布はっぷもちいらいあらためすすむx86ほろ處理しょり執行しっこう平行へいこう計算けいさんいち執行しっこう任務にんむてき能力のうりょくちょう執行しっこういとぐち技術ぎじゅつばらさきただ應用おうよう於英とくXeon 處理しょりなか當時とうじしょうため“Super-Threading”。これ陸續りくぞく應用おうようざいPentium 4 HTなか早期そうきだいごうためJackson。

通過つうか技術ぎじゅつえいとくなんじ實現じつげんざいいち實體じったいCPUなか提供ていきょう兩個りゃんこ逻辑せんほどこれてきPentium D虽不支援しえんちょう執行しっこういとぐち技術ぎじゅつただし集成しゅうせいりょう兩個りゃんこ實體じったい核心かくしんしょ以仍會見かいけんいた兩個りゃんこせんほどちょう執行しっこういとぐちてき未來みらい發展はってんひさげます處理しょりてき逻辑せんほどえいとくなんじ于2016ねん发布てきCore i7-6950X便びんしょう10核心かくしんてき處理しょりじょうちょう執行しっこういとぐち技術ぎじゅつ使つかいなりため20逻辑せんほどてき產品さんぴん

えいとくなんじ表示ひょうじちょう執行しっこういとぐち技術ぎじゅつゆずるPentium 4 HT處理しょり增加ぞうか5%てきはだかあきら面積めんせき,就可以換らい15%~30%てき效能こうのうひさげますただし實際じっさいじょうざいぼう些程しきあるたい執行しっこういとぐちへんやくてきほどしき而言,ちょう執行しっこういとぐちはん而會くだひく效能こうのうじょ此之がいちょう執行しっこういとぐち技術ぎじゅつまたよう作業さぎょう系統けいとうてき配合はいごう普通ふつう支援しえん處理しょり技術ぎじゅつてき系統けいとうまた必能充分じゅうぶんはつ揮該技術ぎじゅつれいWindows 2000えいとくなんじなみ使用しようしゃざい系統けいとうちゅう利用りようちょう執行しっこういとぐちはらさき支援しえん多核たかくしんてきWindows XP Home Edition支援しえんちょう執行しっこういとぐち技術ぎじゅつ

うんさく方式ほうしき

[编辑]

まい單位たんい時間じかん內,いちたん執行しっこうかんせんてきCPUただのう處理しょりいち執行しっこういとぐち作業さぎょう系統けいとう:thread),以這さまてき單位たんい進行しんこう,如果おもえようざい一單位時間內處理超過一個執行緒是不可能的,じょゆう兩個りゃんこCPUてき實體じったい單元たんげんそう核心かくしん技術ぎじゅつはた兩個りゃんこいちようてきCPU放置ほうち於一個封裝內(ある直接ちょくせつはた兩個りゃんこCPU做成いちあきらへん),而英とくなんじてきHT技術ぎじゅつざいCPU內部僅複せい必要ひつようてき資源しげんゆずる兩個りゃんこ執行しっこういとぐち同時どうじ執行しっこうざい一單位時間內處理兩個執行緒的工作,模擬もぎ實體じったいそう核心かくしんそう執行しっこういとぐちうんさく

IntelPentium開始かいし引入ちょう純量じゅんりょうらんじょ執行しっこう大量たいりょうてき暫存よせそんじゅう命名めいめい指令しれいかい碼器あずかはか執行しっこうとう特性とくせい;這些特性とくせいてき原理げんりゆずるCPUようゆう大量たいりょう資源しげんなみ以預さき執行しっこう平行へいこう執行しっこう指令しれい,以增加ぞうか指令しれい執行しっこう效率こうりつざい現實げんじつちゅう這些資源しげん經常けいじょうあいだおけためりょう有效ゆうこう利用りよう這些資源しげん,就乾もろさい增加ぞうか一些資源來執行第二個執行緒,ゆずる這些あいだおけ資源しげん執行しっこういち執行しっこういとぐち,而且CPUただよう增加ぞうか少數しょうすう資源しげん就可以模擬もぎなり兩個りゃんこ執行しっこういとぐちうんさく

P4處理しょり需多いち个Logical CPU Pointer(邏輯處理しょり單元たんげん)。よし此P4 HTてきdieてき面積めんせき以往いおうてきP4增大ぞうだいりょう5%。而其あまり部分ぶぶん如ALU(整數せいすう運算うんざん單元たんげん)、FPU(浮點運算うんざん單元たんげん)、L2 Cache(きゅうかいなみ增加ぞうか,且是どもとおるてき

使用しようHT技術ぎじゅつてきCPU

[编辑]
へんごうSL6WK支援しえんHTてきP4 3.0G
きょなずらえてき2CPUざい工作こうさく管理かんりいんちゅう顯示けんじざい運轉うんてん

Pentium 4 CPUちゅう,Northwood及其こう推出てき版本はんぽん內建ちょう執行しっこういとぐち技術ぎじゅつ;而雙核心かくしんてきPentium Dちゅう也只ゆうEEばん提供ていきょうHT技術ぎじゅつえいとくなんじてきCore 2處理しょりのりぼつゆうHT技術ぎじゅつ[2]

而在2008ねん推出てきIntel Core i7處理しょりまた支援しえんHT技術ぎじゅつざいNehalemほろなか,Hyper-Threadingだい捲土重來けんどじゅうらい。IntelてきHyper-Threading(またたたえどうせんほど善用ぜんよう執行しっこういとぐち平行へいこうせいてき方法ほうほうゆずるたん一核心在應用軟體層能執行兩個邏輯せんほどちょうせんほど技術ぎじゅつざい部分ぶぶんがたごうIntel Core i3/i5/i7/i9處理しょりちゅう可用かようしたがえKaby Lake Pentium開始かいし定位ていいていかいてきPentium(部分ぶぶんがたごう)也支援しえんちょう執行しっこういとぐち技術ぎじゅつ

顧慮こりょ

[编辑]

執行しっこうかんせんてき狀態じょうたい想像そうぞうなり流水りゅうすいせん資源しげんA→資源しげんB→資源しげんC,らいりょうりょうじょう資料しりょうよう計算けいさん一條いちじょう需要じゅよう消耗しょうもうAてき100%→Bてき50%→Cてき50%,另いちじょういちよう需要じゅよう消耗しょうもうAてき100%→Bてき50%→Cてき50%,一條いちじょう單純たんじゅんてきHT)てき執行しっこうかんせんてき資源しげんA需要じゅようさき運用うんよう100%效能こうのうだい一條運算完才能再運算下一條,ただしこうめんてき資源しげんB跟C卻都ゆう50%效能こうのうてき浪費ろうひ;如果執行しっこうかんせんてき資源しげんA,變成へんせい兩個りゃんこ資源しげんB跟C依然いぜんただゆういち這條かんせん就可以變成へんせい兩個りゃんこ資源しげんA同時どうじ消耗しょうもう100%效能こうのう運算うんざんりょうじょう資料しりょういたりょう資源しげんB跟C階段かいだんりょうじょう資料しりょうさい各自かくじ消耗しょうもう50%てき效能こうのう」,そく達成たっせい增加ぞうか一條完整的執行管線,卻能ざい一樣時間運算兩條執行緒」。

ただし實際じっさい應用おうよう執行しっこうかんせんかいおさむいた這麼かん美的びてき運算うんざん資料しりょう可能かのうかい消耗しょうもう「Aてき10%→Bてき70%→Cてき70%」+「Aてき30%→Bてき50%→Cてき70%」+......ひとし多種たしゅ不同ふどう效能こうのう需求てき運算うんざん資料しりょう照文てるぶみけんてき統計とうけい數字すうじ整體せいたいのう夠提ますてき效能こうのうやくため5~15%左右さゆう,且まん一發生資源互搶的情形時,整體せいたい效能こうのうはん而會下降かこう

ようれい電腦でんのう支持しじちょう執行しっこういとぐち技術ぎじゅつ通常つうじょう作業さぎょう系統けいとうかたからだてき配合はいごうあきらへんぐみ需要じゅよう支援しえん具有ぐゆうHT技術ぎじゅつ處理しょりため此,當時とうじてきIntel推出りょうしんてきあきらへんぐみ,i865PEi875P。よう充分じゅうぶん發揮はっきちょう執行しっこういとぐちてき效能こうのう使用しようしゃよう使用しようWindows 2000これてき作業さぎょう系統けいとう,而Windows XPようばんまた支援しえんちょう執行しっこういとぐち技術ぎじゅつじょりょうほろ軟的WindowsがいLinux kernel 2.4.xまた開始かいし支援しえん技術ぎじゅつ。軟體方面ほうめん通常つうじょうゆう執行しっこういとぐちてきほどしき以支援到。早期そうき遊戲ゆうぎ軟體てき支援しえん較少。ただしずいちょ多核たかくこころ技術ぎじゅつてき普及ふきゅういよいよいよいよ遊戲ゆうぎ軟體支援しえん執行しっこういとぐちてき處理しょり[3]

安全あんぜん

[编辑]

2005 ねん 5 がつ,Colin Percival えんじしめせりょう Pentium 4 うえてきちょう线程使用しようもと于时间的侧信どうおさむ击来监控あずか其共とおる缓存てき另一个线程的内存访问模式,从而窃取せっしゅみつ码信いき。 这实际上计时おさむ击,いん为恶线程ただ测量自己じこ执行てき时间。 对此てき潜在せんざいかい决方あん包括ほうかつ处理更改こうかい其缓そん逐出策略さくりゃくある操作そうさけい阻止そしざいどう一物理内核上同时执行具有不同权限的线程。2018 ねんOpenBSD 操作そうさけい统禁ようりょうちょう线程,以避めんすうすえ可能かのう从应ようほどじょ泄漏いた其他软件,原因げんいん Foreshadow/L1TF ほら。2019 ねん,一系列漏洞导致安全专家建议在所有设备上禁用超线程。

しめせれい:获取物理ぶつり核心かくしんすうあずか逻辑核心かくしんすう

[编辑]

Windows APIてきGetLogicalProcessorInformation获取とうぜん计算つくえてき物理ぶつり核心かくしんすう逻辑核心かくしんすう

DWORD GetProcessorCoreCount(DWORD &PhysicalProcessorCoreCount,DWORD &LogicalProcessorCoreCount )
{
	typedef BOOL(WINAPI *LPFN_GLPI)(
		PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
		PDWORD);

	LPFN_GLPI glpi = (LPFN_GLPI)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetLogicalProcessorInformation");

	if (NULL == glpi)
		return 0;

	PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
	DWORD returnLength = 0;
	 PhysicalProcessorCoreCount = 0;
	 LogicalProcessorCoreCount = 0;
	while (true)
	{
		DWORD rc = glpi(buffer, &returnLength);

		if (FALSE == rc)
		{
			if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
			{
				if (buffer)
					free(buffer);

				buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(
					returnLength);

				if (NULL == buffer)
					return 0;
			}
			else
			{
				return 0;
			}
		}
		else
		{
			break;
		}
	}

	PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = buffer;

	DWORD byteOffset = 0;
	while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength)
	{
		switch (ptr->Relationship)
		{
		case RelationProcessorCore:
		{
			++PhysicalProcessorCoreCount;

			// count the logical processor, which is equal the count of digital 1's of ptr->ProcessorMask
			ULONG_PTR   ProcessorMask = ptr->ProcessorMask;
			while (ProcessorMask != 0)
			{
				ProcessorMask &= ProcessorMask - 1;
				LogicalProcessorCoreCount++;
			}
			break;
		}
		default:
			break;
		}
		byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
		++ptr;
	}
	free(buffer);
	return -1;
}

上述じょうじゅつほどしき碼在32へんやく时最多能たのうまい举32个逻辑核しんざい64へんやく时最おおまい举64个邏輯核しん。如果ちょう过64,应该使用しよう processor group.

另見

[编辑]

註腳

[编辑]

外部がいぶ連結れんけつ

[编辑]