ਰੈਂਡਮ ਏਐਸਸੀਆਈਆਈ - ਬਰੂਸ ਡੌਸਨ ਦਾ ਵਨੀਤਾ ਬਲੌਗ
ਰੈਂਡੋਮਾਸਸੀ ਲਈ ਭਵਿੱਖਬਾਣੀ: ਪ੍ਰੋਗਰਾਮਿੰਗ, ਤਕਨੀਕੀ ਵਿਸ਼ੇ, ਸਾਈਕਲ ਚਲਾਉਣ ਦੇ ਮੌਕੇ ਨਾਲ
ਐਕਸਬਾਕਸ 360 ਵਿੱਚ ਸੀਪੀਯੂ ਡਿਜ਼ਾਈਨ ਬੱਗ ਲੱਭਣਾ
ਮੇਲਟਡਾ andਨ ਅਤੇ ਸਪੈਪਟਰ ਦੇ ਹਾਲ ਹੀ ਵਿਚ ਹੋਏ ਖੁਲਾਸਿਆਂ ਨੇ ਮੈਨੂੰ ਉਸ ਸਮੇਂ ਦੀ ਯਾਦ ਦਿਵਾ ਦਿੱਤੀ ਜਦੋਂ ਮੈਂ ਐਕਸਬਾਕਸ 360 ਸੀਪੀਯੂ ਵਿਚ ਇਕ ਸੰਬੰਧਿਤ ਡਿਜ਼ਾਇਨ ਬੱਗ ਲੱਭਿਆ - ਇਕ ਨਵੀਂ ਜੋੜੀ ਗਈ ਹਦਾਇਤ ਜਿਸਦੀ ਸਿਰਫ ਹੋਂਦ ਖ਼ਤਰਨਾਕ ਸੀ.
2005 ਵਿੱਚ ਵਾਪਸ ਮੈਂ ਐਕਸਬਾਕਸ 360 ਸੀਪੀਯੂ ਮੁੰਡਾ ਸੀ. ਮੈਂ ਰਹਿੰਦਾ ਸੀ ਅਤੇ ਉਸ ਚਿੱਪ ਦਾ ਸਾਹ ਲਿਆ. ਮੇਰੇ ਕੋਲ ਅਜੇ ਵੀ ਮੇਰੀ ਕੰਧ 'ਤੇ 30 ਸੈਂਟੀਮੀਟਰ ਦਾ CPU ਵੇਫਰ ਹੈ, ਅਤੇ CPU ਦੇ ਖਾਕੇ ਦਾ ਚਾਰ ਫੁੱਟ ਦਾ ਪੋਸਟਰ ਹੈ. ਮੈਂ ਇਹ ਸਮਝਣ ਵਿੱਚ ਬਹੁਤ ਸਮਾਂ ਬਿਤਾਇਆ ਕਿ ਸੀ ਪੀ ਯੂ ਦੀਆਂ ਪਾਈਪਲਾਈਨਾਂ ਨੇ ਕਿਵੇਂ ਕੰਮ ਕੀਤਾ ਕਿ ਜਦੋਂ ਮੈਨੂੰ ਕੁਝ ਅਸੰਭਵ ਕਰੈਸ਼ਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਕਿਹਾ ਗਿਆ ਤਾਂ ਮੈਂ ਸਮਝਣ ਦੇ ਯੋਗ ਹੋ ਗਿਆ ਕਿ ਇੱਕ ਡਿਜ਼ਾਈਨ ਬੱਗ ਉਨ੍ਹਾਂ ਦਾ ਕਾਰਨ ਕਿਉਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ. ਪਰ ਪਹਿਲਾਂ, ਕੁਝ ਪਿਛੋਕੜ ...
ਐਕਸਬਾਕਸ 360 ਸੀਪੀਯੂ ਇਕ ਤਿੰਨ-ਪਾਵਰ ਪਾਵਰਪੀਸੀ ਚਿੱਪ ਹੈ ਜੋ ਆਈ ਬੀ ਐਮ ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਸੀ. ਤਿੰਨ ਕੋਰ ਤਿੰਨ ਵੱਖਰੇ ਚਤੁਰਭੁਜ ਵਿਚ ਬੈਠਦੇ ਹਨ ਜਿਸ ਵਿਚ ਚੌਥਾ ਚਤੁਰਭੁਜ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿਚ 1-ਐਮਬੀ ਐਲ 2 ਕੈਸ਼ ਹੁੰਦਾ ਹੈ - ਤੁਸੀਂ ਵੱਖਰੇ ਹਿੱਸੇ, ਤਸਵੀਰ ਵਿਚ ਸੱਜੇ ਅਤੇ ਮੇਰੇ ਸੀਪੀਯੂ ਵੇਫਰ ਤੇ ਦੇਖ ਸਕਦੇ ਹੋ. ਹਰੇਕ ਕੋਰ ਵਿੱਚ ਇੱਕ 32-ਕੇਬੀ ਨਿਰਦੇਸ਼ ਨਿਰਦੇਸ਼ ਕੈਚੇ ਅਤੇ ਇੱਕ 32-ਕੇਬੀ ਡਾਟਾ ਕੈਸ਼ ਹੁੰਦਾ ਹੈ.
ਟ੍ਰੀਵੀਆ: ਕੋਰ 0 ਐਲ 2 ਕੈਸ਼ ਦੇ ਨੇੜੇ ਸੀ ਅਤੇ ਘੱਟ L2 ਲੇਟੈਂਸੀਜ਼ ਸਨ.
ਐਕਸਬਾਕਸ CPU CP ਸੀ ਪੀ ਯੂ ਵਿਚ ਹਰ ਚੀਜ ਲਈ ਉੱਚ ਪੱਧਰੇਪਣ ਸਨ, ਮੈਮੋਰੀ ਲੇਟੈਂਸੀ ਵਿਸ਼ੇਸ਼ ਤੌਰ ਤੇ ਮਾੜੀ ਹੈ. ਅਤੇ, 1-ਐਮਬੀ ਐਲ 2 ਕੈਸ਼ (ਉਹ ਸਭ ਜੋ ਫਿੱਟ ਕਰ ਸਕਦੇ ਹਨ) ਤਿੰਨ-ਕੋਰ ਸੀਪੀਯੂ ਲਈ ਬਹੁਤ ਛੋਟਾ ਸੀ. ਇਸ ਲਈ, ਕੈਚ ਦੀ ਯਾਦ ਨੂੰ ਘੱਟ ਕਰਨ ਲਈ ਐਲ 2 ਕੈਚੇ ਵਿਚ ਸਪੇਸ ਦਾ ਬਚਾਅ ਕਰਨਾ ਮਹੱਤਵਪੂਰਣ ਸੀ.
ਸੀਪੀਯੂ ਕੈਚ ਸਥਾਨਕ ਅਤੇ ਅਸਥਾਈ ਸਥਾਨ ਦੇ ਕਾਰਨ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੇ ਹਨ. ਸਥਾਨਿਕ ਸਥਾਨ ਦਾ ਅਰਥ ਹੈ ਕਿ ਜੇ ਤੁਸੀਂ ਡੇਟਾ ਦੀ ਇੱਕ ਬਾਈਟ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ ਤਾਂ ਤੁਸੀਂ ਜਲਦੀ ਹੀ ਹੋਰ ਨੇੜਲੇ ਬਾਈਟਾਂ ਦੇ ਡੇਟਾ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ. ਅਸਥਾਈ ਸਥਾਨ ਦਾ ਅਰਥ ਹੈ ਕਿ ਜੇ ਤੁਸੀਂ ਕੁਝ ਯਾਦਦਾਸ਼ਤ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ ਤਾਂ ਸ਼ਾਇਦ ਤੁਸੀਂ ਨੇੜੇ ਦੇ ਭਵਿੱਖ ਵਿੱਚ ਦੁਬਾਰਾ ਇਸ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ.
ਪਰ ਕਈ ਵਾਰੀ ਅਸਥਾਈ ਸਥਾਨ ਅਸਲ ਵਿੱਚ ਅਜਿਹਾ ਨਹੀਂ ਹੁੰਦਾ. ਜੇ ਤੁਸੀਂ ਇਕ ਵਾਰ-ਪ੍ਰਤੀ-ਫ੍ਰੇਮ ਦੇ ਡੇਟਾ ਦੀ ਵੱਡੀ ਲੜੀ ਤੇ ਕਾਰਵਾਈ ਕਰ ਰਹੇ ਹੋ ਤਾਂ ਇਹ ਮਾਮੂਲੀ ਜਿਹੀ ਸਾਬਤ ਹੋ ਸਕਦੀ ਹੈ ਕਿ ਜਦੋਂ ਤੁਸੀਂ ਦੁਬਾਰਾ ਜ਼ਰੂਰਤ ਕਰੋਗੇ ਇਹ ਸਭ L2 ਕੈਚ ਤੋਂ ਚਲੇ ਜਾਣਗੇ. ਤੁਸੀਂ ਅਜੇ ਵੀ ਉਹ ਡਾਟਾ ਐਲ 1 ਕੈਸ਼ ਵਿਚ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਜੋ ਤੁਹਾਨੂੰ ਸਥਾਨਕ ਸਥਾਨ ਤੋਂ ਲਾਭ ਹੋ ਸਕੇ, ਪਰ ਇਸ ਵਿਚ ਐਲ 2 ਕੈਸ਼ ਵਿਚ ਕੀਮਤੀ ਜਗ੍ਹਾ ਖਰਚਣ ਦਾ ਮਤਲਬ ਇਹ ਹੈ ਕਿ ਇਹ ਹੋਰ ਡਾਟਾ ਕੱict ਦੇਵੇਗਾ, ਸ਼ਾਇਦ ਹੋਰ ਦੋ ਕੋਰ ਹੌਲੀ ਕਰ ਦੇਵੇਗਾ.
ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਅਟੱਲ ਹੈ. ਸਾਡੇ ਪਾਵਰਪੀਸੀ ਸੀ ਪੀ ਯੂ ਦੀ ਮੈਮੋਰੀ ਏਕਤਾ ਦੀ required ੰਗ ਲਈ ਲੋੜੀਂਦਾ ਹੈ ਕਿ ਐਲ 1 ਕੈਚਾਂ ਦਾ ਸਾਰਾ ਡਾਟਾ ਵੀ ਐਲ 2 ਕੈਚ ਵਿੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ. MESI ਪਰੋਟੋਕਾਲ ਮੈਮੋਰੀ ਇਕਸਾਰਤਾ ਲਈ ਵਰਤਿਆ ਹੈ, ਜੋ ਕਿ ਇੱਕ ਕੋਰ ਨੂੰ ਇੱਕ ਕੈਸ਼ ਲਾਈਨ ਲਿਖਦਾ ਹੈ, ਜੋ ਕਿ ਇੱਕੋ ਹੀ ਕੈਸ਼ ਲਾਈਨ ਦੀ ਲੋੜ ਦੀ ਇੱਕ ਕਾਪੀ ਦੇ ਨਾਲ ਕਿਸੇ ਵੀ ਹੋਰ ਕੋਰ ਇਸ ਨੂੰ ਰੱਦ ਕਰਨ ਦੀ ਲੋੜ ਹੈ - ਅਤੇ L2 ਕੈਸ਼ ਟਰੈਕ ਰੱਖਣ, ਜਿਸ ਦੇ L1 ਕੈਸ਼ ਕੈਸ਼ਿੰਗ ਸਨ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਸੀ, ਜਿਸ ਨੂੰ ਪਤੇ.
ਪਰ, ਸੀਪੀਯੂ ਇਕ ਵੀਡੀਓ ਗੇਮ ਦੇ ਕੰਸੋਲ ਲਈ ਸੀ ਅਤੇ ਪ੍ਰਦਰਸ਼ਨ ਨੇ ਸਭ ਨੂੰ ਹਰਾ ਦਿੱਤਾ ਇਸ ਲਈ ਇਕ ਨਵੀਂ ਹਦਾਇਤ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ - xdcbt . ਸਧਾਰਣ ਪਾਵਰਪੀਸੀ ਡੀਸੀਬੀਟੀ ਨਿਰਦੇਸ਼ ਇੱਕ ਖਾਸ ਪ੍ਰੀਫੈਚ ਨਿਰਦੇਸ਼ ਸੀ. Xdcbt ਹਦਾਇਤ ਇੱਕ ਸੀ ਫੈਲਿਆ ਪਰੀਫੈੱਚ ਹਦਾਇਤ ਹੈ ਕਿ ਨੂੰ ਸਿੱਧਾ ਮੈਮੋਰੀ ਤੱਕ L1 D-ਕੈਸ਼ ਕਰਨ ਲਈ ਪ੍ਰਾਪਤ, L2 ਛੱਡਿਆ. ਇਸਦਾ ਮਤਲਬ ਇਹ ਸੀ ਕਿ ਯਾਦਦਾਸ਼ਤ ਦੀ ਏਕਤਾ ਦੀ ਹੁਣ ਕੋਈ ਗਰੰਟੀ ਨਹੀਂ ਸੀ, ਪਰ ਹੇ, ਅਸੀਂ ਵੀਡੀਓ ਗੇਮ ਪ੍ਰੋਗਰਾਮਰ ਹਾਂ, ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਅਸੀਂ ਕੀ ਕਰ ਰਹੇ ਹਾਂ, ਇਹ ਠੀਕ ਰਹੇਗਾ.
ਓਹ ਹੋ।
ਮੈਂ ਵਿਆਪਕ ਤੌਰ 'ਤੇ ਵਰਤੀ ਜਾਂਦੀ ਐਕਸਬਾਕਸ 360 ਮੈਮੋਰੀ ਕਾੱਪੀ ਰੁਟੀਨ ਲਿਖੀ ਹੈ ਜੋ ਵਿਕਲਪਕ ਤੌਰ' ਤੇ xdcbt ਦੀ ਵਰਤੋਂ ਕੀਤੀ . ਸਰੋਤ ਡੇਟਾ ਦੀ ਪ੍ਰੀਫੈਚਿੰਗ ਕਾਰਗੁਜ਼ਾਰੀ ਲਈ ਮਹੱਤਵਪੂਰਣ ਸੀ ਅਤੇ ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਡੀਸੀਬੀਟੀ ਦੀ ਵਰਤੋਂ ਕਰੇਗੀ ਪਰ PREFETCH_EX ਫਲੈਗ ਵਿੱਚ ਪਾਸ ਹੋਵੇਗੀ ਅਤੇ ਇਹ xdcbt ਨਾਲ ਪ੍ਰੀਫੈਚ ਕਰੇਗੀ . ਇਹ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸੋਚਿਆ ਨਹੀਂ ਗਿਆ ਸੀ. ਪ੍ਰੀਫੈਚਿੰਗ ਅਸਲ ਵਿੱਚ ਸੀ:
ਜੇ (ਝੰਡੇ ਅਤੇ PREFETCH_EX)
__xdcbt (src + ਆਫਸੈੱਟ);
ਹੋਰ
__dcbt (src + ਆਫਸੈੱਟ);
ਇੱਕ ਗੇਮ ਡਿਵੈਲਪਰ ਜੋ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਿਹਾ ਸੀ ਨੇ ਅਜੀਬ ਕਰੈਸ਼ਾਂ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ - ਹੀਪ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਦੇ ਕਰੈਸ਼ ਹੋ ਗਏ, ਪਰ ਮੈਮੋਰੀ ਡੰਪ ਵਿੱਚ apੇਰ ਦੇ structuresਾਂਚੇ ਆਮ ਦਿਖਾਈ ਦਿੱਤੇ. ਕੁਝ ਦੇਰ ਲਈ ਕਰੈਸ਼ ਡੰਪਸ 'ਤੇ ਭੁੱਖਣ ਤੋਂ ਬਾਅਦ ਮੈਨੂੰ ਅਹਿਸਾਸ ਹੋਇਆ ਕਿ ਮੈਂ ਕਿਹੜੀ ਗਲਤੀ ਕੀਤੀ ਸੀ.
ਮੈਮੋਰੀ ਜੋ ਕਿ xdcbt ਨਾਲ ਪਹਿਲਾਂ ਹੈ, ਉਹ ਜ਼ਹਿਰੀਲੀ ਹੈ. ਜੇ ਇਹ ਐਲ 1 ਤੋਂ ਦੂਰ ਕੀਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਕਿਸੇ ਹੋਰ ਕੋਰ ਦੁਆਰਾ ਲਿਖਿਆ ਗਿਆ ਹੈ ਤਾਂ ਦੋ ਕੋਰਾਂ ਦੀ ਯਾਦਦਾਸ਼ਤ ਦੇ ਵੱਖੋ ਵੱਖਰੇ ਵਿਚਾਰ ਹੁੰਦੇ ਹਨ ਅਤੇ ਇਸ ਗੱਲ ਦੀ ਕੋਈ ਗਰੰਟੀ ਨਹੀਂ ਹੈ ਕਿ ਉਨ੍ਹਾਂ ਦੇ ਵਿਚਾਰ ਕਦੇ ਬਦਲ ਜਾਣਗੇ. ਐਕਸਬਾਕਸ 360 ਕੈਸ਼ ਲਾਈਨਾਂ 128 ਬਾਈਟ ਸਨ ਅਤੇ ਮੇਰੀ ਕਾੱਪੀ ਰੁਟੀਨ ਦੀ ਪ੍ਰੀਫੈਚਿੰਗ ਸਰੋਤ ਮੈਮੋਰੀ ਦੇ ਅੰਤ ਦੇ ਬਿਲਕੁਲ ਸਿਰੇ ਚਲੀ ਗਈ ਸੀ , ਮਤਲਬ ਕਿ xdcbt ਕੁਝ ਕੈਸ਼ ਲਾਈਨਾਂ ਤੇ ਲਾਗੂ ਕੀਤੀ ਗਈ ਸੀ ਜਿਨ੍ਹਾਂ ਦੇ ਬਾਅਦ ਵਾਲੇ ਹਿੱਸੇ ਡੈਟਾ ਦੇ aceਾਂਚੇ ਦਾ ਹਿੱਸਾ ਸਨ. ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਹੀਪ ਮੈਟਾਡੇਟਾ ਸੀ - ਘੱਟੋ ਘੱਟ ਉਹ ਜਗ੍ਹਾ ਹੈ ਜਿਥੇ ਅਸੀਂ ਕਰੈਸ਼ ਵੇਖੇ. ਅਸੁਖਾਵੇਂ ਕੋਰ ਨੇ ਬਾਸੀ ਡੇਟਾ ਵੇਖਿਆ (ਲਾਕਾਂ ਦੀ ਸਾਵਧਾਨੀ ਨਾਲ ਵਰਤੋਂ ਕਰਨ ਦੇ ਬਾਵਜੂਦ), ਅਤੇ ਕਰੈਸ਼ ਹੋ ਗਿਆ, ਪਰ ਕਰੈਸ਼ ਡੰਪ ਨੇ ਰੈਮ ਦੀ ਅਸਲ ਸਮੱਗਰੀ ਲਿਖ ਦਿੱਤੀ ਤਾਂ ਜੋ ਅਸੀਂ ਨਹੀਂ ਵੇਖ ਸਕੀ ਕਿ ਕੀ ਹੋਇਆ.
ਇਸ ਲਈ, xdcbt ਵਰਤਣ ਦਾ ਇਕੋ ਇਕ ਸੁਰੱਖਿਅਤ safe ੰਗ ਸੀ ਬਫਰ ਦੇ ਅੰਤ ਤੋਂ ਪਰੇ ਇਕ ਬਾਈਟ ਨੂੰ ਵੀ ਪ੍ਰੀਫੈਚ ਨਾ ਕਰਨ ਲਈ ਬਹੁਤ ਸਾਵਧਾਨ ਰਹਿਣਾ. ਮੈਂ ਆਪਣੀ ਮੈਮੋਰੀ ਕਾਪੀ ਦੀ ਰੁਟੀਨ ਨੂੰ ਬਹੁਤ ਜ਼ਿਆਦਾ ਦੂਰ ਕਰਨ ਤੋਂ ਰੋਕਿਆ, ਪਰ ਫਿਕਸ ਦੀ ਉਡੀਕ ਕਰਦਿਆਂ ਗੇਮ ਡਿਵੈਲਪਰ ਨੇ PREFETCH_EX ਫਲੈਗ ਲੰਘਣਾ ਬੰਦ ਕਰ ਦਿੱਤਾ ਅਤੇ ਕਰੈਸ਼ ਚਲੇ ਗਏ.
ਅਸਲ ਬੱਗ
ਇਤਨਾ ਸਧਾਰਣ, ਠੀਕ ਹੈ? ਕਾਕੀ ਗੇਮ ਡਿਵੈਲਪਰ ਅੱਗ ਨਾਲ ਖੇਡਦੇ ਹਨ, ਸੂਰਜ ਦੇ ਨੇੜੇ ਜਾ ਕੇ ਉਡਾਉਂਦੇ ਹਨ , ਆਪਣੀਆਂ ਮਾਵਾਂ ਨਾਲ ਵਿਆਹ ਕਰਾਉਂਦੇ ਹਨ , ਅਤੇ ਗੇਮ ਦੇ ਕੰਸੋਲ ਕ੍ਰਿਸਮਸ ਨੂੰ ਲਗਭਗ ਯਾਦ ਕਰਦੇ ਹਨ.
ਪਰ, ਅਸੀਂ ਸਮੇਂ ਸਿਰ ਇਸ ਨੂੰ ਫੜ ਲਿਆ, ਅਸੀਂ ਇਸ ਨਾਲ ਭੱਜ ਗਏ, ਅਤੇ ਅਸੀਂ ਸਾਰੇ ਗੇਮਜ਼ ਅਤੇ ਕੰਸੋਲ ਭੇਜਣ ਅਤੇ ਖੁਸ਼ ਘਰ ਨੂੰ ਜਾਣ ਲਈ ਤਿਆਰ ਸੀ.
ਅਤੇ ਫਿਰ ਉਹੀ ਖੇਡ ਦੁਬਾਰਾ ਕ੍ਰੈਸ਼ ਹੋਣਾ ਸ਼ੁਰੂ ਹੋਇਆ.
ਲੱਛਣ ਇਕੋ ਜਿਹੇ ਸਨ. ਸਿਵਾਏ ਇਹ ਕਿ ਖੇਡ ਹੁਣ xdcbt ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੀ ਸੀ . ਮੈਂ ਕੋਡ ਨੂੰ ਵੇਖ ਸਕਦਾ ਹਾਂ ਅਤੇ ਇਹ ਵੇਖ ਸਕਦਾ ਹਾਂ. ਸਾਨੂੰ ਇੱਕ ਗੰਭੀਰ ਸਮੱਸਿਆ ਸੀ.
ਮੈਂ ਆਪਣੇ ਸਕ੍ਰੀਨ ਤੇ ਖਾਲੀ ਦਿਮਾਗ ਨਾਲ ਭਟਕਣ ਦੀ ਪ੍ਰਾਚੀਨ ਡੀਬੱਗਿੰਗ ਤਕਨੀਕ ਦੀ ਵਰਤੋਂ ਕੀਤੀ, CPU ਪਾਈਪ ਲਾਈਨ ਮੇਰੇ ਅਵਚੇਤਨ ਨੂੰ ਭਰਨ ਦਿਓ, ਅਤੇ ਮੈਨੂੰ ਅਚਾਨਕ ਸਮੱਸਿਆ ਦਾ ਅਹਿਸਾਸ ਹੋਇਆ. ਆਈਬੀਐਮ ਨੂੰ ਇੱਕ ਤੇਜ਼ ਈਮੇਲ ਨੇ ਇੱਕ ਸੂਖਮ ਅੰਦਰੂਨੀ ਸੀਪੀਯੂ ਵੇਰਵੇ ਬਾਰੇ ਮੇਰੇ ਸ਼ੱਕ ਦੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਜਿਸ ਬਾਰੇ ਮੈਂ ਪਹਿਲਾਂ ਕਦੇ ਨਹੀਂ ਸੋਚਿਆ ਸੀ. ਅਤੇ ਇਹ ਮੇਲਟਡਾdownਨ ਅਤੇ ਸਪੈਪਟਰ ਦੇ ਪਿੱਛੇ ਉਹੀ ਦੋਸ਼ੀ ਹੈ.
ਐਕਸਬਾਕਸ CP 360. ਸੀ ਪੀ ਯੂ ਇਕ ਕ੍ਰਮਵਾਰ ਸੀ ਪੀ ਯੂ ਹੈ. ਇਹ ਸੱਚਮੁੱਚ ਬਹੁਤ ਸੌਖਾ ਹੈ, ਪ੍ਰਦਰਸ਼ਨ ਲਈ ਇਸ ਦੀ ਉੱਚ ਫ੍ਰੀਕੁਐਂਸੀ (10 FO4 ਦੇ ਬਾਵਜੂਦ ਉਮੀਦ ਜਿੰਨੀ ਨਹੀਂ) 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ . ਪਰ ਇਸਦਾ ਸ਼ਾਖਾ ਦਾ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲਾ ਹੈ - ਇਸ ਦੀਆਂ ਬਹੁਤ ਲੰਮੀ ਪਾਈਪਾਂ ਇਸ ਨੂੰ ਜ਼ਰੂਰੀ ਬਣਾਉਂਦੀਆਂ ਹਨ. ਇੱਥੇ ਮੈਂ ਸਰਵਜਨਕ ਤੌਰ 'ਤੇ ਸਾਂਝਾ ਕੀਤਾ CPU ਪਾਈਪਲਾਈਨ ਚਿੱਤਰ ਹੈ ਜੋ ਮੇਰਾ ਬਣਾਇਆ ਹੈ (ਮੇਰਾ ਚੱਕਰ-ਸਹੀ ਸੰਸਕਰਣ ਸਿਰਫ NDA ਹੈ, ਪਰ ਇੱਥੇ ਲੁੱਕ ਹੈ ) ਜੋ ਕਿ ਸਾਰੀਆਂ ਪਾਈਪਾਂ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ:
ਤੁਸੀਂ ਬ੍ਰਾਂਚ ਦੇ ਭਵਿੱਖਬਾਣੀਕਰਤਾ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ, ਅਤੇ ਤੁਸੀਂ ਵੇਖ ਸਕਦੇ ਹੋ ਕਿ ਪਾਈਪ ਲਾਈਨ ਬਹੁਤ ਲੰਬੇ ਹਨ (ਚਿੱਤਰ ਤੇ ਚੌੜੇ) - ਗਲਤ ਅਨੁਮਾਨਿਤ ਨਿਰਦੇਸ਼ਾਂ ਦੀ ਗਤੀ ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਕਾਫ਼ੀ ਲੰਬੇ ਹਨ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਕ੍ਰਮ ਵਿੱਚ ਪ੍ਰਕਿਰਿਆ ਦੇ ਨਾਲ ਵੀ.
ਇਸ ਲਈ, ਬ੍ਰਾਂਚ ਦਾ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲਾ ਇਕ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ ਅਤੇ ਭਵਿੱਖਬਾਣੀ ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਡੀਕੋਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ - ਪਰ ਉਦੋਂ ਤਕ ਰਿਟਾਇਰ ਨਹੀਂ ਹੁੰਦਾ ਜਦੋਂ ਤਕ ਭਵਿੱਖਬਾਣੀ ਸਹੀ ਨਹੀਂ ਹੁੰਦੀ. ਜਾਣਦਾ ਹੈ ਆਵਾਜ਼? ਇਹ ਅਹਿਸਾਸ ਮੇਰੇ ਕੋਲ ਸੀ - ਇਹ ਮੇਰੇ ਲਈ ਉਸ ਸਮੇਂ ਨਵਾਂ ਸੀ - ਇਹ ਉਹੀ ਸੀ ਜਿਸਦਾ ਅਰਥ ਸੀ ਕਿ ਅਗਾ .ਂ ਪ੍ਰੀਫੈਚ ਨੂੰ ਚਲਾਉਣਾ. ਵਿਛੋੜੇ ਲੰਬੇ ਸਨ, ਇਸ ਲਈ ਇਹ ਜ਼ਰੂਰੀ ਸੀ ਕਿ ਬੱਸ ਵਿੱਚ ਛੇਤੀ ਤੋਂ ਛੇਤੀ ਪ੍ਰੀਫੇਚ ਲੈਣ-ਦੇਣ ਕਰਨਾ, ਅਤੇ ਇੱਕ ਵਾਰ ਪ੍ਰੀਫੈਚ ਸ਼ੁਰੂ ਹੋ ਗਿਆ ਸੀ ਤਾਂ ਇਸ ਨੂੰ ਰੱਦ ਕਰਨ ਦਾ ਕੋਈ ਰਸਤਾ ਨਹੀਂ ਸੀ. ਇਸ ਲਈ ਇੱਕ speculatively-ਚਲਾਉਣ ਨੂੰ xdcbt ਸੀ ਇੱਕ ਅਸਲੀ ਦਾ ਇੱਕੋ xdcbt! (ਇੱਕ ਸੱਟੇਬਾਜ਼ੀ ਦੁਆਰਾ ਚਲਾਇਆ ਲੋਡ ਨਿਰਦੇਸ਼ ਸਿਰਫ ਇੱਕ ਅਗੇਤਰ ਸੀ, FWIW).
ਅਤੇ ਇਹ ਸਮੱਸਿਆ ਸੀ - ਸ਼ਾਖਾ ਦਾ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲੇ ਕਈ ਵਾਰ xdcbt ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਸੱਟੇਬਾਜ਼ੀ ਨਾਲ ਚਲਾਉਣ ਦਾ ਕਾਰਨ ਬਣਦੇ ਸਨ ਅਤੇ ਇਹ ਉਨੀ ਮਾੜੀ ਸੀ ਜਿੰਨੀ ਅਸਲ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਚਲਾਇਆ ਗਿਆ. ਮੇਰੇ ਸਹਿਕਰਮੀਆਂ ਵਿੱਚੋਂ ਇੱਕ (ਧੰਨਵਾਦ ਟ੍ਰੇਸੀ!) ਨੇ ਇਸਦੀ ਤਸਦੀਕ ਕਰਨ ਲਈ ਇੱਕ ਚਲਾਕ ਟੈਸਟ ਦਾ ਸੁਝਾਅ ਦਿੱਤਾ - ਗੇਮ ਵਿੱਚ ਹਰ ਐਕਸਡੀਸੀਬੀਟੀ ਨੂੰ ਬਰੇਕ ਪੁਆਇੰਟ ਨਾਲ ਬਦਲੋ . ਇਸਨੇ ਦੋ ਚੀਜਾਂ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ:
- ਬਰੇਕ ਪੁਆਇੰਟਾਂ ਨੂੰ ਹਿੱਟ ਨਹੀਂ ਕੀਤਾ ਗਿਆ, ਇਸ ਤਰ੍ਹਾਂ ਇਹ ਸਾਬਤ ਹੁੰਦਾ ਹੈ ਕਿ ਗੇਮ xdcbt ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਲਾਗੂ ਨਹੀਂ ਕਰ ਰਹੀ ਸੀ .
- ਕਰੈਸ਼ ਚਲੇ ਗਏ.
ਮੈਨੂੰ ਪਤਾ ਸੀ ਕਿ ਇਹ ਨਤੀਜਾ ਹੋਵੇਗਾ ਅਤੇ ਅਜੇ ਵੀ ਇਹ ਹੈਰਾਨੀਜਨਕ ਸੀ. ਇਹ ਸਾਰੇ ਸਾਲਾਂ ਬਾਅਦ, ਅਤੇ ਮੈਲਟਡਾ aboutਨ ਬਾਰੇ ਪੜ੍ਹਨ ਤੋਂ ਬਾਅਦ ਵੀ , ਇਹ ਠੋਸ ਸਬੂਤ ਵੇਖਣਾ ਅਜੇ ਵੀ ਠੰ .ਾ ਹੈ ਕਿ ਨਿਰਦੇਸ਼ਾਂ ਨੂੰ ਲਾਗੂ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ, ਕਰੈਸ਼ ਹੋ ਰਹੇ ਸਨ.
ਬ੍ਰਾਂਚ ਦੇ ਭਵਿੱਖਬਾਣੀਕਰਤਾ ਨੇ ਇਹ ਸਪੱਸ਼ਟ ਕਰ ਦਿੱਤਾ ਕਿ ਇਹ ਹਦਾਇਤ ਕਿਸੇ ਵੀ ਖੇਡ ਦੇ ਕੋਡ ਹਿੱਸੇ ਵਿੱਚ ਕਿਤੇ ਵੀ ਹੋਣਾ ਬਹੁਤ ਖ਼ਤਰਨਾਕ ਸੀ - ਨਿਯੰਤਰਣ ਕਰਨਾ ਜਦੋਂ ਕਿਸੇ ਨਿਰਦੇਸ਼ ਨੂੰ ਸੱਟੇਬਾਜ਼ੀ ਨਾਲ ਚਲਾਇਆ ਜਾਣਾ ਬਹੁਤ ਮੁਸ਼ਕਲ ਹੁੰਦਾ ਹੈ. ਅਸਿੱਧੇ ਸ਼ਾਖਾਵਾਂ ਲਈ ਬ੍ਰਾਂਚ ਭਵਿੱਖਬਾਣੀ, ਸਿਧਾਂਤਕ ਤੌਰ 'ਤੇ, ਕਿਸੇ ਵੀ ਪਤੇ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਐਕਸ ਡੀ ਸੀ ਬੀ ਟੀ ਨਿਰਦੇਸ਼ ਦੇਣ ਲਈ ਕੋਈ "ਸੁਰੱਖਿਅਤ ਜਗ੍ਹਾ" ਨਹੀਂ ਸੀ . ਅਤੇ, ਜੇ ਸੱਟੇਬਾਜ਼ੀ ਨਾਲ ਅੰਜਾਮ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਇਹ ਖੁਸ਼ੀ ਖੁਸ਼ੀ ਖੁਸ਼ੀ ਨਾਲ ਜੋ ਵੀ ਰਜਿਸਟਰ ਹੋਏ ਯਾਦਾਂ ਨੂੰ ਯਾਦ ਰੱਖਦਾ ਹੈ ਉਸਦਾ ਇੱਕ ਵੱਡਾ ਵਿਖਾਵਾ ਕਰਦਾ ਹੈ. ਜੋਖਮ ਨੂੰ ਘਟਾਉਣਾ ਸੰਭਵ ਸੀ, ਪਰ ਇਸ ਨੂੰ ਖ਼ਤਮ ਨਹੀਂ ਕਰਨਾ, ਅਤੇ ਇਹ ਇਸ ਲਈ ਮਹੱਤਵਪੂਰਣ ਨਹੀਂ ਸੀ. ਜਦੋਂ ਕਿ ਐਕਸਬਾਕਸ architect 360. ਆਰਕੀਟੈਕਚਰ ਵਿਚਾਰ-ਵਟਾਂਦਰੇ ਨਿਰਦੇਸ਼ਾਂ ਦਾ ਜ਼ਿਕਰ ਕਰਨਾ ਜਾਰੀ ਰੱਖਦੇ ਹਨ ਮੈਨੂੰ ਸ਼ੱਕ ਹੈ ਕਿ ਕੋਈ ਵੀ ਖੇਡ ਇਸ ਨਾਲ ਕਦੇ ਨਹੀਂ ਭੇਜੀ ਗਈ.
ਮੈਂ ਇੱਕ ਵਾਰ ਨੌਕਰੀ ਦੇ ਇੰਟਰਵਿ. ਦੌਰਾਨ ਇਸਦਾ ਜ਼ਿਕਰ ਕੀਤਾ - "ਉਸ ਮੁਸ਼ਕਲ ਬੱਗ ਦਾ ਵਰਣਨ ਕਰੋ ਜਿਸਦੀ ਤੁਹਾਨੂੰ ਜਾਂਚ ਕਰਨੀ ਪਈ ਸੀ" - ਅਤੇ ਇੰਟਰਵਿer ਦੇਣ ਵਾਲੇ ਦੀ ਪ੍ਰਤੀਕ੍ਰਿਆ ਸੀ "ਹਾਂ, ਅਸੀਂ ਅਲਫਾ ਪ੍ਰੋਸੈਸਰ ਤੇ ਕੁਝ ਅਜਿਹਾ ਹੀ ਮਾਰਿਆ". ਹੋਰ ਚੀਜ਼ਾਂ ਬਦਲਦੀਆਂ ਹਨ ...
ਕੁਝ ਸੰਪਾਦਨ ਲਈ ਮਾਈਕਲ ਦਾ ਧੰਨਵਾਦ .
ਪੋਸਟਸਕ੍ਰਿਪਟ
ਜਿਹੜੀ ਸ਼ਾਖਾ ਜਿਹੜੀ ਕਦੇ ਨਹੀਂ ਲਈ ਜਾਂਦੀ ਉਸ ਤੋਂ ਕਿਵੇਂ ਲਿਆ ਜਾਏਗਾ ਬਾਰੇ ਭਵਿੱਖਬਾਣੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ? ਆਸਾਨ. ਬ੍ਰਾਂਚ ਦੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲੇ ਹਰੇਕ ਸ਼ਾਖਾ ਲਈ ਸੰਪੂਰਨ ਇਤਿਹਾਸ ਨੂੰ ਬਰਕਰਾਰ ਨਹੀਂ ਰੱਖਦੇ - ਇਹ ਅਵਿਸ਼ਵਾਸ਼ਯੋਗ ਹੋਵੇਗਾ. ਇਸ ਦੀ ਬਜਾਏ ਸਧਾਰਣ ਸ਼ਾਖਾ ਦੇ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ਵਾਲੇ ਆਮ ਤੌਰ 'ਤੇ ਪਤੇ ਦੇ ਬਿੱਟਾਂ ਦਾ ਇੱਕ ਸਮੂਹ ਬਣਾਉਂਦੇ ਹਨ, ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੁਝ ਸ਼ਾਖਾ ਇਤਿਹਾਸ ਬਿੱਟ ਵੀ ਹੋਵੇ, ਅਤੇ ਦੋ-ਬਿੱਟ ਐਂਟਰੀਆਂ ਦੀ ਸੂਚੀ ਵਿੱਚ ਇੰਡੈਕਸ. ਇਸ ਤਰ੍ਹਾਂ, ਬ੍ਰਾਂਚ ਦੀ ਭਵਿੱਖਬਾਣੀ ਦਾ ਨਤੀਜਾ ਦੂਜੀਆਂ, ਸੰਬੰਧ ਰਹਿਤ ਸ਼ਾਖਾਵਾਂ ਦੁਆਰਾ ਪ੍ਰਭਾਵਿਤ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਕਈ ਵਾਰੀ ਉਤਸ਼ਾਹੀ ਭਵਿੱਖਬਾਣੀ ਹੁੰਦੀ ਹੈ. ਪਰ ਇਹ ਠੀਕ ਹੈ, ਕਿਉਂਕਿ ਇਹ "ਸਿਰਫ ਇੱਕ ਭਵਿੱਖਬਾਣੀ" ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਸਹੀ ਹੋਣ ਦੀ ਜ਼ਰੂਰਤ ਨਹੀਂ ਹੈ.
ਇਸ ਪੋਸਟ ਦੀ ਚਰਚਾ ਹੈਕਰ ਨਿ hackਜ਼ , ਆਰ / ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਨੀਤਾ , ਆਰ / ਇਮੂਲੇਸ਼ਨ ਅਤੇ ਟਵਿੱਟਰ 'ਤੇ ਪਾਈ ਜਾ ਸਕਦੀ ਹੈ .
ਕੁਝ ਸਾਲ ਪਹਿਲਾਂ ਇੱਥੇ Vnita ਸੰਬੰਧਿਤ ਕੁਝ ਹੱਦ ਤਕ (ਐਕਸਬਾਕਸ, ਕੈਸ਼) ਬੱਗ ਬਾਰੇ ਵਿਚਾਰ ਵਟਾਂਦਰੇ ਕੀਤੇ ਗਏ ਸਨ .
कोई टिप्पणी नहीं:
एक टिप्पणी भेजें